【发布时间】:2018-10-12 07:43:47
【问题描述】:
我创建了一个名为 Library.c 的共享库文件
#include<stdio.h>
int Addition(int a, int b)
{
int s;
s = a + b;
return s;
}
调试共享库
gcc -shared -o libshared.so Library.c
创建一个访问共享库函数的小程序
#include<stdio.h>
int Addition(int a, int b);
void main(int argc, char *argv[])
{
int total;
total = Addition(19, 23);
printf("Total = %d\n", total);
}
调试程序
gcc -o foo foo.c -L. -shared
执行程序,我得到错误
Segmentation fault
使用 gdb 我得到了当前输出
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000001 in ?? ()
(gdb) bt
#0 0x0000000000000001 in ?? ()
#1 0x00007fffffffe4ca in ?? ()
#2 0x0000000000000000 in ?? ()
【问题讨论】:
-
你是指第二个 gcc 命令中的
-lshared吗? -
试试
cp libshared.so /usr/lib/。你可能会喜欢unix.stackexchange.com/questions/22926/… -
我按照你说的复制了库文件。但它没有用。所以我像这样导出库文件
export LD_LIBRARY_PATH=/usr/lib/然后我检查了echo $LD_LIBRARY_PATH以查看它是否已设置。但是分段错误仍然存在 -
@TomekSzpakowicz 不,我没有。但是一旦这样做,它就起作用了。谢谢
标签: c segmentation-fault shared-libraries