2017-09-04 24 views
0

Mingw32를 사용하여 OpenGL 프로그램을 크로스 컴파일하려고했지만로드 블록을 실행했습니다. mingw32-configure를 호출 한 후; 나는 서로이 웹 사이트에 제안 후 내 시스템에 LLVM 소프트웨어 래스터 라이저를 추가 한mingw32로 Linux OpenGL 프로그램을 컴파일 할 수 없습니다. Config.log 오류 : '_glEnable'에 대한 정의되지 않은 참조

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. */ 

: 컴파일이

configure: error: lacking proper OpenGL support 

의해 중단 나는 다음과 같은 항목을 config.log 파일을 확인하고 발견 thread를 사용하여 libopengl32.a를 libGL.a에 복사하는 Mingw 사이트의 제안을 구현했습니다. 지금까지 컴파일 시도가 끝날 때마다받는 오류는 변경되지 않았습니다.

해결 방법에 대한 조언을주세요.

답변

0

autotools/autoconf는 크로스 컴파일에 좋지 않습니다. 생성 된 configure 스크립트가 작동하는 방식은 많은 테스트에서 을 컴파일하고 짧은 테스트 스 니펫 프로그램을 실행하려고 시도하는 것입니다. 물론 명령 집합 지원 (다른 CPU 용으로 컴파일)이 없거나 완전히 다른 OS를 대상으로하기 때문에 전체 "실행"부분은 크로스 컴파일 된 라이브러리에서 비참하게 실패 할 것입니다.

적어도 Linux에서는 "misc binfmt"커널 지원을 사용하여이 문제를 해결할 수 있습니다.이 지원을 통해 고유하지 않은 실행 가능 형식의 인터프리터를 등록 할 수 있습니다. Windows 타겟의 경우 와인을 인터프리터로 사용하고 외부 CPU의 경우 QEmu를 사용하면 전체 시스템을 에뮬레이트 할 수있을뿐만 아니라 CPU 에뮬레이션을 단일 프로세스/바이너리에 집중할 수 있습니다. 그리고 물론 그것을 결합 할 수 있습니다.

그러나 이건 그냥 버팀목 일 뿐이며 솔직히 autoconf/autotools를 완전히 몰아 내고 Makefile을 작성해야합니다. 오늘날 * nix-ish 시스템은 매우 유사하여 이러한 컴파일 된 테스트는 전혀 의미가 없습니다.