我正在使用Kubuntu14.04,并将FreeImage库安装在
sudo apt-get install libfreeimage-dev据我所知,它是正确安装的,FreeImage.h在/usr/include中,libfreeimage.a在/usr/lib中。然而,这个琐碎的C程序
#include <FreeImage.h>
int main(int argc, char **argv) {
FreeImage_Initialise(FALSE);
FreeImage_DeInitialise();
return 0;
}无法编译。正在运行
gcc -lfreeimage fitest.c -o fitest输出
/tmp/ccFbb0HQ.o: In function `main':
fitest.c:(.text+0x15): undefined reference to `FreeImage_Initialise'
fitest.c:(.text+0x1a): undefined reference to `FreeImage_DeInitialise'
collect2: error: ld returned 1 exit status我做错了什么?
发布于 2014-09-02 22:27:11
通常情况下,共享库不是这种情况,而只是静态库,但无论如何,我还是要尝试一下,因为它与您的症状相匹配,而且您还提到了libfreeimage.a而不是libfreeimage.so,这表明您正在尝试使用静态库。
当针对静态库进行链接时,需要在解释源/对象参数之后向编译器提供库参数,因为编译器将只处理库中尚未解决的符号:
gcc -o fitest fitest.c -lfreeimage如果在任何源/对象参数之前提供静态库参数,则没有任何符号未得到解决,库中将不会选择任何符号,相反,这些符号最终将被视为未解决。
https://stackoverflow.com/questions/25633202
复制相似问题