我试图使用libtommath库。我使用NetBeans IDE为我的项目在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命令和跳过makefile,我也确保静态库也编译gcc以及。
编辑为添加:
$ 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)和EXACT同样的问题。这必须是某种类型的Ubuntu环境问题?任何人都有任何想法如何解决这个问题?