2011-06-24 80 views
3

Android-NDK主要用於編寫/移植本地庫,它可以通過JNI機制從Java調用。Google-NDK /編譯沒有任何JNI交互的命令行C應用程序

我有一個嵌入Android的基於ARM的evalboard。這個evalboard有一個串口,這樣我就可以在遠程終端上登錄,然後啓動命令或其他應用程序(「命令行應用程序」 - 非Java應用程序)。

我想知道Android NDK是否可以編譯「純」C應用程序,我稍後將它用作遠程shell的命令?主要想法是從Google-NDK提供的工具鏈中受益,以構建不與Dalvik機器交互的代碼。

最好的問候, Apple92

+0

事實上,在最新的NDK的新功能。您可以生成自己的工具鏈並從任何Makefile中調用它。 – user255607

回答

1

是的,你可以編譯使用NDK命令行程序。如果你看看任何正在運行的Android系統,你會發現許多使用同一編譯器編譯的命令行程序的例子。

+1

你有這些例子的鏈接嗎? – user255607

+0

只是偶然發現了與user255607相同的問題,雖然這個答案在技術上是正確的,但它也完全沒有價值。 – hirschhornsalz

+0

@ hirschhornsalz因爲沒有問題可以回答更詳細的問題,我認爲你的評論也是毫無價值的一面。你已經有足夠的時間知道必須提出問題,而不是假設。最初提出的問題得到了回答。如果您覺得我的回答沒有用處,請說明我忽略了哪部分問題。 – mah

1

是的,有BUILD_EXECUTABLE命令,其行爲像BUILD_SHARED_LIBRARY,但生成可執行文件。 訣竅是你的可執行文件所依賴的庫 - 它們或者需要已經在設備上(/ system/bin),否則你將不得不用你的可執行文件上傳它們。

我想出了下面的腳本上傳和執行測試:

#!/bin/sh 

adb shell rm -r /data/temp 
adb shell mkdir /data/temp 

for i in dst/* 
do 
    adb push ${i} /data/temp 
done 

cat <<EOF | adb shell 
LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/data/temp 
/data/temp/test 
exit 
EOF