我正在尝试交叉编译这个最小的GLUT程序:
#include
int main(int argc, char **argv)
{
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
glutCreateWindow("Cross-compile testing");
glutMainLoop();
return 0;
}
我使用的命令:
在Linux上编译:g main.cpp -lglut -o main
交叉编译动态:i686-w64-mingw32-g main.cpp -lglut -o main.exe
交叉编译静态:i686-w64-mingw32-g main.cpp -static -DFREEGLUT_STATIC -lglut -o main.exe
在Archlinux上编译(64位,上面的第一个命令)工作正常
使用动态链接编译Windows(32位,上面的第2个命令)工作正常
使用静态链接编译Windows(32位,第3个命令)会给我一些未定义的引用错误:
/tmp/ccIXyF1j.o:main.cpp:(.text+0x1c): undefined reference to `__glutInitWithExit'
/tmp/ccIXyF1j.o:main.cpp:(.text+0x37): undefined reference to `__glutCreateWindowWithExit'
/tmp/ccIXyF1j.o:main.cpp:(.text+0x52): undefined reference to `__glutCreateMenuWithExit'
/tmp/ccIXyF1j.o:main.cpp:(.text+0x80): undefined reference to `glutInitDisplayMode'
/tmp/ccIXyF1j.o:main.cpp:(.text+0x91): undefined reference to `glutMainLoop'
有什么想法吗?我正在使用Archlinux AUR的MinGW freeglut软件包(https://aur.archlinux.org/packages/mingw-w64-freeglut/) . 将 -mwindows 添加到编译器选项或 #include 添加到代码也无济于事 .
在我的交叉编译器的lib文件夹中
./libglut32.a
./libglut.la
./libglut.a
./libglut.dll.a
我究竟做错了什么?你有什么想法?