无法使用mingw32交叉编译Linux openGL程序。 Config.log错误:未定义的引用'_glEnable'

问题描述:

我正在尝试使用Mingw32交叉编译OpenGL程序,但遇到了路障。调用mingw32-configure后;编译由无法使用mingw32交叉编译Linux openGL程序。 Config.log错误:未定义的引用'_glEnable'

configure: error: lacking proper OpenGL support 

打断我检查的config.log文件,发现如下条目:

configure:21709: checking GL/gl.h usability 
configure:21726: ccache i686-pc-mingw32-g++ -c -O2 -g -pipe -Wall -,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -mms-bitfields  conftest.cpp >&5 
configure:21732: $? = 0 
configure:21746: result: yes 
configure:21750: checking GL/gl.h presence 
configure:21765: ccache i686-pc-mingw32-g++ -E conftest.cpp 
configure:21771: $? = 0 
configure:21785: result: yes 
configure:21813: checking for GL/gl.h 
configure:21820: result: yes 
configure:21834: checking for glEnable in -lGL 
configure:21869: ccache i686-pc-mingw32-g++ -o conftest.exe -O2 -g -pipe - Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions --param=ssp-buffer-size=4 -mms-  bitfields conftest.cpp -lGL >&5 
/tmp/ccjGmlvX.o: In function 'main':../rpmbuild/SOURCES/poker3d-1.1.36/conftest.cpp:34: undefined reference to `_glEnable' 
collect2: ld returned 1 exit status 
configure:21875: $? = 1 
configure: failed program was: 
| /* confdefs.h. */ 

我有一个建议之后,从另一个加入LLVM软件光栅到我的系统本网站与此问题相关的线程,并且还实施了来自Mingw站点的将libopengl32.a复制到libGL.a的建议。到目前为止,没有任何改变每次编译尝试后得到的错误。

给我一些关于如何解决这个问题的建议。

autotools/autoconf对于交叉编译来说是非常糟糕的。生成的configure脚本的工作方式是,对于许多测试,它会尝试编译并执行短测试片段程序。当然,由于缺乏指令集支持(针对不同的CPU进行编译)或针对完全不同的操作系统,整个“执行”部分对于交叉编译库来说将会失败。

至少在Linux中,可以使用“misc binfmt”内核支持来解决此问题,该支持允许为非本机可执行格式注册解释器。对于Windows目标,您可以使用Wine作为解释器,对于外部CPU,您可以使用QEmu,它不仅可以模拟整个机器,还可以将CPU仿真集中在单个进程/二进制文件上。当然你可以把它结合起来。

但是,这只是一个拐杖,说实话,你应该完全抛弃autoconf/autotools,只写Makefiles。今天,* nix-ish系统非常相似,所有这些编译的测试都没有任何意义。