Я установил новую библиотеку из источника, и я пытаюсь установить ссылку на нее. Компилятор жалуется, что он не может найти символы, которые должны быть в lib.Как подключиться к общей библиотеке?
Вот ошибки я получаю:
$ make all
gcc -std=c99 -g -Wall -O3 `pkg-config --cflags --libs libmodbus` -c client.c -o client.o
gcc -std=c99 -g -Wall -O3 `pkg-config --cflags --libs libmodbus` client.o -o client
client.o: In function `main':
/home/gauthier/code/modbus/client.c:29: undefined reference to `modbus_new_tcp'
/home/gauthier/code/modbus/client.c:30: undefined reference to `modbus_connect'
/home/gauthier/code/modbus/client.c:33: undefined reference to `modbus_read_registers'
/home/gauthier/code/modbus/client.c:35: undefined reference to `modbus_close'
/home/gauthier/code/modbus/client.c:36: undefined reference to `modbus_free'
collect2: error: ld returned 1 exit status
make: *** [client] Error 1
pkg-config
говорит, что это:
$ pkg-config --cflags --libs libmodbus
-I/usr/local/include/modbus -L/usr/local/lib -lmodbus
и файлы в /usr/local/lib
таковы:
$ ls /usr/local/lib/ | grep mod
libmodbus.la
libmodbus.so
libmodbus.so.5
libmodbus.so.5.0.5
Кроме того, таким образом файл содержит Неопределенные ссылки:
$ grep modbus_connect /usr/local/lib/*
Binary file /usr/local/lib/libmodbus.so matches
Binary file /usr/local/lib/libmodbus.so.5 matches
Binary file /usr/local/lib/libmodbus.so.5.0.5 matches
Я пробовал добавить /usr/local/lib
в LD_LIBRARY_PATH
, чтобы нет av. Не то чтобы я, хотя это помогло бы, так как у меня есть -L
в моей команде компилятора в любом случае.
Я также попытался вручную написать -I
, -L
и -l
(не используя pkg-config
), это не помогло.
Как мне сделать компоновщик понятным, что ссылки на функции modbus_*
есть?
НКУ -v ххх, чтобы увидеть многословным – farmer1992
положить -lmodbus до конца – farmer1992