我得到未定义的参考错误,同时用FreeType 2构build一个简单的例子。
gcc `/usr/bin/freetype-config --cflags` `/usr/bin/freetype-config --libs` ac /tmp/ccuSpdkr.o: In function `main': ac:(.text+0x10): undefined reference to `FT_Init_FreeType' collect2: error: ld returned 1 exit status
我在Ubuntu 12.10 x64上。 软件包libfreetype6&libfreetype6-dev已安装。
文件ac
是:
#include <stdio.h> #include <ft2build.h> #include FT_FREETYPE_H int main() { FT_Library library; FT_Init_FreeType( &library ); return 0; }
我试了2步编译,确保一切都在64位:
> gcc -c `/usr/bin/freetype-config --cflags` ac > file ao ao: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped > /usr/bin/freetype-config --cflags -I/usr/include/freetype2 > /usr/bin/freetype-config --libs -L/usr/lib/x86_64-linux-gnu -lfreetype -lz > file /usr/lib/x86_64-linux-gnu/libfreetype.so.6.9.0 /usr/lib/x86_64-linux-gnu/libfreetype.so.6.9.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x8ed223c2650372fc88b41fd348a72f03329adefa, stripped
我错过了什么?
你应该把链接器标志放在对象和/或源文件之后; 代替
gcc `freetype-config --libs` ac
写
gcc ac `freetype-config --libs`