Я пытаюсь использовать библиотеку libtommath. Я использую IDE NetBeans для своего проекта в Ubuntu Linux. Я скачал и собрал библиотеку, я сделал 'make install', чтобы поместить полученный файл .a в / usr / lib /, а файлы .h в / usr / include
Похоже, что файлы находят должным образом (поскольку я больше не получаю тех ошибок, которые я делал до установки в каталоги / usr).
Однако, когда я создаю простую основную запись с вызовом mp_init (который находится в библиотеке), я получаю следующую ошибку при попытке сделать свой проект:
mkdir -p build/Debug/GNU-Linux-x86
rm -f build/Debug/GNU-Linux-x86/main.o.d
gcc -c -g -MMD -MP -MF build/Debug/GNU-Linux-x86/main.o.d -o build/Debug/GNU-Linux-x86/main.o main.c
mkdir -p dist/Debug/GNU-Linux-x86
gcc -o dist/Debug/GNU-Linux-x86/cproj1 build/Debug/GNU-Linux-x86/main.o
build/Debug/GNU-Linux-x86/main.o: In function 'main':
/home/[[myusername]]/NetBeansProjects/CProj1/main.c:18: undefined reference to `mp_init'
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/cproj1] Error 1
Итак, похоже, что компоновщик не может найти функцию в библиотеке, однако она есть, поэтому я просто не знаю, что может быть причиной этого.
Я получаю ту же ошибку, если набираю команду gcc напрямую и пропускаю make-файл, я также убедился, что статическая библиотека также скомпилирована с gcc.
Отредактировано для добавления:
Я получаю те же ошибки, если выполняю компиляцию напрямую и добавляю библиотеку с -l или -L:
$ gcc -l /usr/lib/libtommath.a main.c
/usr/bin/ld: cannot find -l/usr/lib/libtommath.a
collect2: ld returned 1 exit status
$ gcc -llibtommath.a main.c
/usr/bin/ld: cannot find -llibtommath.a
collect2: ld returned 1 exit status
$ gcc -Llibtommath.a main.c
/tmp/ccOxzclw.o: In function `main':
main.c:(.text+0x18): undefined reference to `mp_init'
collect2: ld returned 1 exit status
$ gcc -Llibtommath.a main.c
/tmp/ccOxzclw.o: In function `main':
main.c:(.text+0x18): undefined reference to `mp_init'
collect2: ld returned 1 exit status
Я очень разбираюсь в этом, поэтому я не уверен, что использую правильную команду здесь, в примерах -L найдены библиотеки? Если библиотека не найдена, как я могу найти ее, чтобы найти библиотеку? Он находится в / usr / lib, я пробовал его с файлом .a в текущем каталоге и т. Д. Нужно ли установить переменную среды? Если да, то как и т. Д.
Я пробовал совершенно другую библиотеку (GMP), и у меня была ТОЧНАЯ проблема. Это должно быть какой-то проблемой среды Ubuntu? У кого-нибудь есть идеи, как это исправить?