[C言語] 共有ライブラリを作って呼んでみる

共有ライブラリで発生した異常をgdbで調べてみる実験をしたく、まずは、共有ライブラリを作成&実験してみた。
環境は、以下。

  • 2.6.18-92.1.22.el5

  • gcc (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42)
以下のファイルをそれぞれ作成してから、make; sh run.shと実行すればめでたく(?)core発生。
"Makefile"
all : test_core

clean :
        rm -f test_core test_core.o liba.so liba.so.1 liba.so.1.0 liba.o
        rm -f core.*

test_core : test_core.o liba.so.1.0
        gcc -g -o test_core test_core.o -L. -la

test_core.o : test_core.c
        gcc -Wall -g -c test_core.c -o test_core.o

liba.so.1.0 : liba.o
        gcc -g -shared -Wl,-soname,liba.so.1 -o liba.so.1.0 liba.o -lc
        ln -sf liba.so.1 liba.so
        ln -sf liba.so.1.0 liba.so.1

liba.o : liba.c liba.h
        gcc -fpic -g -c -Wall liba.c

"liba.h"
int liba();

"liba.c"
int liba()
{
        int i = 10 / 0;
        return 0;
}

"test_core.c"
//
//      coreダンプをあえて作成するプログラム
//
#include "liba.h"

int main(void)
{
        liba();
        return 0;
}

"run.sh"
#!/bin/sh
ulimit -c unlimited
LD_LIBRARY_PATH="."; export LD_LIBRARY_PATH
./test_core

コメント

このブログの人気の投稿

[Minecraft: Wii U Edition] SEED:306959825 海底神殿、森の洋館、メサがある有名神マップ [ネタバレ注意]

【パソコン】富士通LIFEBOOKでUSBブートする

浴室の電球をLEDへ交換(National製白熱灯照明RL93013)

【パソコン】 WiinUProでSwitchプロ・コントローラーをPCで使ってみる

VOBファイルの結合

Windows XPのLANを有効化/無効化する

[Minecraft Bedrock] Lifeboatってなんだ?!