如何链接到FreeImage?

时间:2014-09-02 22:12:09

标签: c freeimage

我正在使用Kubuntu 14.04,并使用

安装了FreeImage库
sudo apt-get install libfreeimage-dev

据我所知,它已正确安装,FreeImage.h中的/usr/includelibfreeimage.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

我做错了什么?

1 个答案:

答案 0 :(得分:3)

这通常不是共享库的情况,而只是静态的,但是我总是试一试,因为它符合你的症状,你也提到libfreeimage.a而不是libfreeimage.so,表示您正在尝试使用静态库。

当链接到静态库时,需要在 explcit源/对象参数之后为库提供参数,因为编译器只处理库中尚未解析的符号:

gcc -o fitest fitest.c -lfreeimage

如果在任何源/对象参数之前给出一个静态库参数,那么,没有任何符号尚未解析,将不会从库中挑选任何符号,并且这些符号将在最后被视为未解析。