Я пытаюсь использовать библиотеку libtommath. Я использую среду IDE NetBeans для своего проекта на Linux-сервере Ubuntu. Я загрузил и построил библиотеку, я сделал "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? Кто-нибудь знает, как это исправить?