Linux は初めてですが、ダイナミック ライブラリを使用してコンパイルしているときに、segmentationfault エラーが発生します。
私は2つのファイルを持っています
ctest1.c
void ctest1(int *i)
{
*i =10;
}
ctest2.c
void ctest2(int *i)
{
*i =20;
}
次のコマンドを使用して、両方のファイルを libtest.so という名前の共有ライブラリにコンパイルしました
gcc -shared -W1,-soname,libtest.so.1 -o libtest.so.1.0.1 ctest1.o ctest2.o -lc
そして、このライブラリによってエクスポートされた関数を使用する別のプログラム prog.c を作成しました。
prog.c
#include <stdio.h>
void (*ctest1)(int*);
void (ctest2)(int*);
int main()
{
int a;
ctest1(&a);
printf("%d",a);
return 0;
}
そして、次のコマンドで実行可能ファイルをビルドしたとき
gcc -Wall prog.c -L. -o プログラム
しかし、生成された実行可能ファイルを実行すると、SegmentationFault エラーが発生します。
ldd で prog のヘッダーを確認すると、次のように表示されます
linux-vdso.so.1 => (0x00007f99dff000) libc.so.6 => /lib64/libc.so.6 (0x0007feeaa8c1000) /lib64/ld-linux-x86-64.so.2 (0x00007feeaac1c000)
誰かが何が問題なのか教えてもらえますか