在Android系統上執行C C 程式

2021-06-16 15:38:57 字數 1221 閱讀 1034

1. 安裝ndk;

2. 編寫hello.c原始檔

#include

int main()

3. 編寫編譯指令碼compile.sh:

#!/bin/bash

prefix=$ndk_home

cc="$prefix/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi-gcc"

ndk="$prefix/platforms/android-14/arch-arm"

cflags="-i$ndk/usr/include"

ldflags="-nostdlib -wl,-rpath-link=$ndk/usr/lib -l$ndk/usr/lib $ndk/usr/lib/crtbegin_dynamic.o -lc"

$cc -o $1 $2 $cflags $ldflags

4. 執行編譯指令碼:

chmod u+x compile.sh

./compile.sh hello hello.c

5. 到android裝置上執行

adb push hello /data/local/tmp/hello

adb shell /data/local/tmp/hello

6. 看到輸出結果:

hello, arm c world!

7. 當然,可以直接使用ndk-build命令來編譯

a. 新建目錄 workspace;

b. 進入workspace,新建目錄jni;

c. 進入jni,新建hello.c檔案,輸入原始檔內容;

d. 新建android.mk檔案,內容如下:

local_path:= $(call my-dir)

include $(clear_vars)

local_src_files:= hello.c

local_module := libtest

include $(build_executable)

e. 執行ndk-build命令,可看到在workspace目錄下生成了libs和obj兩個目錄,libs下對應的armeabi資料夾下有生成的可執行檔案 test

f. adb push test /data/local/tmp/test

adb shell test /data/local/tmp/test 執行

在BeagleBoard上執行QNX系統(一)

折騰了好幾天,終於成功在beagleboard上執行qnx系統,如果說在beagleboard上執行android費了一些手腳的話,在beagleboard上執行qnx可以說是費盡周折。秉承本部落格的主旨,將折騰過程記錄下來,供各位同學參考,以後可以少繞一些彎子。1.首先要將啟動的sd卡進行分割槽和...

在VMWare上執行VOD系統

1 安裝ardos3.exe 2 我打算使用啟動選單為兩個啟動專案,雙擊 vod預設 2.cmd 重啟電腦,按預設啟動方式應該能進入vod server系統,但沒有進入,出現如下錯誤 搜尋了一下,這種錯誤可能是grub4dos版本太老所致。我們之前安裝的矮人dos3也是比較老的版本,最新的好像有5....

如何在Android系統上執行C 程式

有兩種方式 使用 ndk,通過 jni 的方式來呼叫 c 的方法。這部分知識點很多,可以參考 android ndk 從入門到精通 彙總篇 android 的本質是基於 linux 系統的,我們是可以直接執行 c 的程式 使用 ndk 編譯生成在 android 系統上可執行的執行程式 把編譯好的可...