使用静态链接在Linux上交叉编译Windows的GLUT项目

时间:2014-01-25 17:05:30

标签: c++ windows opengl cross-compiling glut

我正在尝试交叉编译这个最小的GLUT程序:

#include <GL/glut.h>

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(https://aur.archlinux.org/packages/mingw-w64-freeglut/)的MinGW freeglut软件包。 将-mwindows添加到编译器选项或将#include <windows.h>添加到代码中也无济于事。

在我的交叉编译器的lib文件夹中,我有

./libglut32.a
./libglut.la
./libglut.a
./libglut.dll.a

我做错了什么? 你有什么想法吗?

0 个答案:

没有答案