我创建了一个名为 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 = %dn", 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
构建为共享库。由于系统上的某种原因,尝试执行共享库会导致段错误,而不是生成更有意义的错误消息。