如何修复C编程中访问共享库功能时的分段错误?



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

相关内容

  • 没有找到相关文章