我是 linux 新手,在使用动态库进行编译时出现分段错误错误。
我有两个文件
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,它使用了这个库导出的函数
程序.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)
有人可以告诉问题是什么