我创建了一个名为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命令中:
gcc -o foo foo.c -L. -shared
你有
-shared
而不是-lshared
因此,您不用链接到libshared.so
而是将foo
构建为一个共享库由于某些原因,在系统上尝试执行共享库会导致segfault,而不是生成更有意义的错误消息。关于c - 如何在C编程中访问共享库功能时解决段错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52774676/