Я пытаюсь изучить концепции разделяемой библиотеки в Linux с помощью GCC. Поэтому я создал простую библиотеку.Создание простой общей библиотеки
library.c
int foo(void) {
return 10;
}
Это скомпилированы с использованием,
cc -fPIC -g -c library.c
cc -shared -fPIC -Wl,-soname,libmytest.so.1 -o libmytest.so.1.0.1 library.o -lc
Он создал файл libmytest.so.1.0.1
в текущем каталоге. Теперь я пишу клиент, чтобы использовать эту библиотеку в том же каталоге.
client.c
#include <stdio.h>
extern int foo(void);
int main()
{
int a = foo();
printf("a is %d", a);
return 0;
}
компиляции с использованием,
cc client.c -o client -lmytest
, но это выходит с сообщением
/usr/bin/ld: cannot find -lmytest
collect2: ld returned 1 exit status
Может кто-нибудь помочь мне узнать, что я делаю Неправильно здесь?
Спасибо, но не повезло. по-прежнему такая же ошибка. Я даже пытался указать полный путь, но не работал. –
Мне нужно запустить 'ldconfig'? –
Я получил его работу, предоставив имя библиотеки напрямую, а не через -l. –