누군가가 안드로이드 NDK (r8d)의 툴체인으로 새로운 SDL2를 빌드 할 수 있었는지 궁금합니다.NDK 툴체인으로 SDL2 빌드하기
SDL2는 어제부터 "더 이상 CONSTROCTION이 아님 : http://hg.libsdl.org/SDL/rev/0a3d2ec7af6d"입니다.이 파일은 Android.mk와 함께 제공되며 번들로 제공되는 README.android 파일의 지침에 따라 정상적으로 컴파일됩니다. 제 질문은 실제로 작동하는 automake 기반 빌드가 없거나 안드로이드에서 컴파일 할 수 있을지 아니면 내 툴체인 설정에 문제가 있는지 여부입니다.
$에있는 설명서의 지침에 따라 NDK 툴체인을 설치했습니다. NDK/doc/STANDALONE-TOOLCHAIN.html gcc 4.6을 사용하고 있습니다. 사용하는 환경은 다음과 같습니다.
#!/bin/sh
export TOOLCHAIN=$HOME/Android/android-14-arm
export PATH=$TOOLCHAIN/bin:$PATH
export SYSROOT=$TOOLCHAIN/sysroot
export CROSS_COMPILE="arm-linux-androideabi"
export CC=$CROSS_COMPILE-gcc
export CXX=$CROSS_COMPILE-g++
export CPP=$CROSS_COMPILE-cpp
export CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon"
export LDFLAGS="-march=armv7-a -Wl,--fix-cortex-a8"
echo "Compiler set up for ARM 14"
012 3,516,
구성의 PARAMS : 내가 성공적으로 libjpeg 터보 V8 및 SDL_image를 구축 동일한 구성으로
./configure --host=arm-linux-androideabi --prefix=$SYSROOT/usr/local
. 구성 스크립트는 크로스 컴파일러를 인식하고 메이크를 구축하지만, 그것은 X11 지원을 발견,는 OpenGL ES를 볼 수 없습니다 ... 만들기는 실패
In file included from /usr/include/features.h:378:0,
from /usr/include/sys/types.h:27,
from ./include/SDL_stdinc.h:35,
...
내가 구성 로그를 확인, 내가 "/ usr/include"가 어디에서 유래했는지 전혀 모른다. 사실, 생성 된 makefile은 EXTRA_CFLAGS의 해당 행을 컴파일러에 추가합니다. NDK 문서는 --with-sysroot = $ SYSROOT을 선택적으로 참조합니다. 문제가 해결되었는지 확인하기 위해 포함 시켰지만 도움이되지 않았습니다. 마지막으로 수동으로 Makefile을 편집하여 해당 참조를 수정했으며 컴파일러가 X11.h에 대해 불평했습니다. AFAIK Android는 X11과 아무 관련이 없으므로 NDK와 함께 사용하기에 완전히 부적절한 전체 빌드 트리를 추측합니다.
다른 구성을 사용해 보았습니다. 구형 스레드 here에 있습니다. 둘하지 -DANDROID -mandroid -fomit 프레임 포인터를 정의도 다시 변경해하는 ARMv7-A는 -mfloat-ABI = softfp -mfpu = VFP -mthumb "는 문제. 이전 프로젝트
해결 내가 있었다 = -march 할 config.guess를 새로 고치고, config.sub를 사용하여 컴파일러를 인식하도록하십시오 .. SDL은 이들을 사용하지 않습니다. 또한 Makefile.ac 또는 Makefile.am은 SDL과 함께 작동하지 않으며 다른 플랫폼을위한 템플릿도 없습니다 또한, 자신의 makefile을 만드는 좋은 출발점으로 사용할 수 있습니다. 또한 makefile을 다룰 필요가 없었고 이러한 문제를 해결할 기회가 없었습니다. 성공하더라도 구성 도구가 필요할 것입니다. , ndk-build가 configure 스크립트없이 SDL2를 설치하는 방법을 알지 못하기 때문에.
SDL 소스를 함께 프로젝트로 컴파일하는 것은 유일한 일이지만 못생긴 해결책입니다. make install을 사용하여 필요한 lib 및 헤더 파일을 배포하고 싶습니다.
나는
오류 스 니펫은 실제로 오류가 아닙니다. 오류를 넣는 것을 놓친 것입니다. 오류가있는 파일이 있습니다. – Samveen
configure를 사용하여 SDL2를 빌드하십시오. make는 이론적으로 작동해야하지만, devs는 그렇게하지 않습니다. 그게 도청 된 이유입니다. 언제든지 발견 한 버그를보고하십시오!) to Bugzilla https://bugzilla.libsdl.org 시도해 볼 수있는 한 가지 방법은 실험하고 싶다면 configure를 실행하고 SDL_config.h 맨 위에/SDL_config_android.h를 복사 한 다음 make를 실행합니다. 작동합니다 (SDL_config_android.h는 안드로이드 용으로 미리 설정된 설정 헤더로 정상적인 설정이어야합니다). – gabomdq