開發測試平台:小強機械人
很多c++和c程式都使用cmake去管理程式依賴和編譯程式。新版本的cmake已經支援 cross compile 程式到android平台。我們可以利用ndk和cmake很方便的移植程式。下面是乙個移植的例子。
因為新版本的ndk已經預設使用clang進行編譯了
安裝方式參照這裡
wget -q
tar -xzf cmake-3.14.0-rc4.tar.gz
cd cmake-3.14.0-rc4/
env cc=
$(which clang)
cxx=
$(which clang++)
./bootstrap --prefix=/usr --parallel=4
make
sudo
make
install
cd
..wget -q
unzip -qq android-ndk-r18b-linux-x86_64.zip
export ndk_root=
$(pwd
)/android-ndk-r18b
toolchain檔案是cmake用來設定編譯工具鏈的檔案。配置好此檔案就可以讓cmake cross compile android 程式了。
toolchain.cmake檔案內容如下
# 設定編譯android
set(cmake_system_name android)
# 設定android ndk 路徑
set(cmake_android_ndk $env)
# 設定 android abi
set(cmake_android_arch_abi armeabi-v7a)
# 設定target api版本
set(cmake_system_version 19)
# 設定cmake尋找路徑,自己隨便建立乙個資料夾, 依賴的相關庫檔案也要放在這裡
set(cmake_find_root_path /opt/arm)
# 設定cmake搜尋檔案的方式,防止使用系統中的其他不相干檔案
set(cmake_find_root_path_mode_program both)
set(cmake_find_root_path_mode_library only)
set(cmake_find_root_path_mode_include only)
和正常編譯方式差別不大,只要加上toolchain引數就可以了
mkdir build
cd build
cmake -dcmake_toolchain_file=
$toolchain_root/toolchain.cmake -dcmake_install_prefix=
$install_prefix
..
toolchain_root是你的toolchain檔案路徑, install_prefix是之前設定的cmake_find_root_path。這樣就可以cross compile android程式了。 移植程式到symbian平台
symbian平台理論上可以平移標準的c c 語 言程式,以及標準庫。只需要在mmp檔案中進行如下編寫 target hello.exe targettype exe uid 0 sourcepath source slhello.c systeminclude epoc32 include lib...
c 程式移植到android
在android 4.4之後新增了新的保護機制,可執行檔案必須是採用pie編譯的。如果是使用ndk進行編譯的 需要使用到android.mk指令碼 則在指令碼中新增 local cflags pie fpie local ldflags pie fpie 如果是手動採用交叉編譯鏈進行編譯的,則在編譯...
Linux程式移植到Android上
序言 由於本人還是比較偏重於先說明原理在說明實際操作步驟,要知其然更要知其所以然,如下圖所示 一般情況下,有兩種方法。1.乙個就是將程式靜態編譯,將程式中所有需要的庫全部編譯進可執行檔案中。這樣程式在android中執行就不需要鏈結任何動態庫了。但是帶來乙個非常大的弊端就是這個程式會非常大,資源利用...