如何利用cmake移植程式到Android

2021-09-14 01:39:07 字數 1604 閱讀 4665

開發測試平台:小強機械人

很多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中執行就不需要鏈結任何動態庫了。但是帶來乙個非常大的弊端就是這個程式會非常大,資源利用...