我有一个简单的程序:
#include <GL/gl.h>
#include <GLFW/glfw3.h>
#include <cglm/cglm.h>
#include <ft2build.h>
#include FT_FREETYPE_H
int main(void){
/* Initializing fonts */
FT_Library ft;
if(FT_Init_FreeType(&ft)) {
fprintf(stderr, "Failed initializing Freetypen");
return -1;
}
/* * * * * * * * * * * */
return 0;
}
我用
编译i686-w64-mingw32-gcc game.c -lglfw3dll -lopengl32 -lfreetype -lmingw32 -lgdi32 -luser32 -lkernel32 -lpthread -lm $(pkg-config --cflags freetype2 | sed "s//usr///usr/i686-w64-mingw32//g") -O3 -o Game
链接程序时似乎有错误:
/usr/lib/gcc/i686-w64-mingw32/11.2.0/../../../../i686-w64-mingw32/bin/ld: /tmp/ccYBzSJN.o:main.c:(.text.startup+0x13e): undefined reference to `FT_Init_FreeType'
我该如何解决这个问题?
我很确定sed "s//usr///usr/i686-w64-mingw32//g"
不会工作。也许sed "s?/usr/usr/i686-w64-mingw32??g" might work, but I recommend you use
pkg-config——define-prefix——cflags freetype2without sed, to let
pkg-config会找到正确的路径。
同样,您正在用一行编译和链接,因此您还需要添加链接器标志(pkg-config --define-prefix --libs freetype2
)。
那么试试这样写:
i686-w64-mingw32-gcc game.c -lglfw3dll -lopengl32 -lfreetype -lmingw32 -lgdi32 -luser32 -lkernel32 -lpthread -lm $(pkg-config --define-prefix --cflags --libs freetype2) -O3 -o Game