Как исправить ошибку сегментации при доступе к функции общей библиотеки в C-программировании? - PullRequest
0 голосов
/ 12 октября 2018

я создал файл общей библиотеки с именем 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 ?? ()

1 Ответ

0 голосов
/ 14 октября 2018

Во 2-й команде gcc:

gcc -o foo foo.c -L. -shared

вместо -lshared вместо *1005*.Поэтому вместо ссылки на libshared.so вы создаете foo как общую библиотеку.По какой-то причине в вашей системе попытка выполнить разделяемую библиотеку вызывает сбой, вместо того чтобы выдавать более значимое сообщение об ошибке.

...