Я новичок в Linux, при компиляции с динамической библиотекой я получаю ошибку ошибки сегментации.
У меня есть два файла
ctest1.c
void ctest1(int *i)
{
*i =10;
}
ctest2.c
void ctest2(int *i)
{
*i =20;
}
Я скомпилировал оба файла в общую библиотеку с именем libtest.so, используя следующую команду
gcc -shared -W1,-soname,libtest.so.1 -o libtest.so.1.0.1 ctest1.o ctest2.o -lc
И я написал другую программу prog.c, которая использует функции, экспортируемые этой библиотекой
prog.c
#include <stdio.h>
void (*ctest1)(int*);
void (ctest2)(int*);
int main()
{
int a;
ctest1(&a);
printf("%d",a);
return 0;
}
А когда я собрал исполняемый файл с помощью следующей команды
gcc -Wall prog.c -L. -о прога
Но когда я запускаю сгенерированный исполняемый файл, я получаю ошибку SegmentationFault.
Когда я проверял заголовок прог с ldd, он показывает
linux-vdso.so.1 => (0x00007f99dff000)
libc.so.6 => /lib64/libc.so.6 (0x0007feeaa8c1000)
/lib64/ld-linux-x86-64.so.2 (0x00007feeaac1c000)
Может кто-нибудь сказать, в чем проблема