2013-02-15 90 views
7

我想知道是否有人通過Android NDK工具鏈(r8d)設法構建了新的SDL2。使用NDK工具鏈構建SDL2

SDL2似乎是非常接近的版本(因爲昨天它不是「UNDER CONSTROCTION了:http://hg.libsdl.org/SDL/rev/0a3d2ec7af6d)。它配備了一個Android.mk,只是編譯以下罰款在捆綁README.android文件中的指令。我的問題是,是否真的沒有工作automake的基礎構建可用或將可用來編譯它在Android,或有什麼地方錯了我的工具鏈的設置?

我已經安裝了下列位於$文件的指示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" 

的配置PARAMS:

./configure --host=arm-linux-androideabi --prefix=$SYSROOT/usr/local 

使用相同的配置我成功構建的libjpeg渦輪增壓V8發動機和SDL_image。 配置腳本識別交叉編譯器,並建立makefile文件,但是,它發現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 doc引用--with-sysroot = $ SYSROOT作爲可選項,我已經將它包含在內以查看它是否可以解決問題,但這沒有幫助。 作爲最後的努力,我手動編輯了Makefile,修復了這個引用,現在編譯器抱怨了X11.h. AFAIK Android與X11無關,所以我猜想整個構建樹完全不適合與NDK一起使用。

我也嘗試了不同的配置,發現在一個較舊的線程here。 既不限定-DANDROID -mandroid -fomit幀指針也不變回-march = ARMv7的-一個-mfloat-ABI = softfp -mfpu = VFP -mthumb」解決了這個問題。

在之前的項目,我有刷新config.guess和config.sub以便讓我的編譯器識別SDL似乎沒有使用這些,而且沒有Makefile.ac或Makefile.am與SDL一起使用,並且沒有其他平臺的模板可以使用用於創建我自己的makefile的一個很好的起點,另外,我從來不需要處理makefile,我真的沒有機會解決這些問題,即使成功,我也可能需要一個配置工具,因爲我不知道ndk-build如何在沒有配置腳本的情況下安裝SDL2。

與項目一起編譯SDL源代碼是唯一可行的 - 但很難看的解決方案。我想通過make install來部署必要的lib和頭文件。

我希望的解決方案是什麼,我只是沒想到真的很容易和明顯的事情......

+0

錯誤代碼段不是真的錯誤。您錯過了放入錯誤的信息,並且其中的所有內容都是包含錯誤的文件。 – Samveen 2013-08-09 04:54:41

+0

使用configure;構建SDL2 make應該在理論上工作,但是沒有一個開發人員會這樣做,這就是爲什麼它被竊聽的原因。隨意報告你發現的任何錯誤(和補丁!)到Bugzilla https://bugzilla.libsdl.org 有一件事你可以嘗試,如果你想嘗試一下,就是運行configure,之後在SDL_config.h的頂部包含/ SDL_config_android.h,然後運行make,或許這是有效的(SDL_config_android.h是一個適合Android的預編譯頭文件,它應該有相同的設置)。 – gabomdq 2013-09-20 13:35:19

回答