【发布时间】:2010-04-26 04:38:29
【问题描述】:
我是 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,它使用了这个库导出的函数
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)
谁能告诉我是什么问题
【问题讨论】:
标签: gcc dynamic-linking