2017-09-04 256 views
0

我正在嘗試使用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的建議。到目前爲止,沒有任何改變每次編譯嘗試後得到的錯誤。

給我一些關於如何解決這個問題的建議。

回答

0

autotools/autoconf對於交叉編譯來說是非常糟糕的。生成的configure腳本的工作方式是,對於許多測試,它會嘗試編譯並執行短測試片段程序。當然,由於缺乏指令集支持(針對不同的CPU進行編譯)或針對完全不同的操作系統,整個「執行」部分對於交叉編譯庫來說將會失敗。

至少在Linux中,可以使用「misc binfmt」內核支持來解決此問題,該支持允許爲非本機可執行格式註冊解釋器。對於Windows目標,您可以使用Wine作爲解釋器,對於外部CPU,您可以使用QEmu,它不僅可以模擬整個機器,還可以將CPU仿真集中在單個進程/二進制文件上。當然你可以把它結合起來。

但是,這只是一個柺杖,說實話,你應該完全拋棄autoconf/autotools,只寫Makefiles。今天,* nix-ish系統非常相似,所有這些編譯的測試都沒有任何意義。

相關問題