對於有過開發跨語言經歷的朋友而言,使用不同語言同時在乙個專案中使用不算什麼奇怪的事情,
甚至在編寫c/c++程式時,有時為了各種原因用到(一般是巢狀或者呼叫)asm(彙編),
從形式上來看 這是跨語言的表現,但是實質上來說,此種做法是利用了編譯器的可識別性和可編譯性,也就是說c/c++的編譯器本身就能夠編譯asm的內容。
眾所周知,jvm是不能直接編譯和執行c/c++的,因此,ndk的誕生就是為了解決這個問題。
其實ndk就是運用了早已存在的jni技術,只不過增加了不同硬體平台的編譯器(arm,x86,amd等),使得執行在這些硬體平台的軟體能夠呼叫c/c++程式。
首先你得知道你的硬體型別和系統位數,
系統位數:
windows:電腦->屬性。。。)
linux: uname -m(不帶*_64輸出的就是32)
硬體型別:
檢視你的pc的cpu型別
windows可以檢視管理工具
linux 執行 lshw 或者檢視 /proc/cpuinfo
解壓:tar jxvf android-ndk32-r10-linux-x86.tar.bz2
-c $path到任意路徑(建議放到 /opt 或者eclipse的安裝目錄附近),解壓後目錄名稱可以自定義(維持原樣亦可)
為了在任意路徑下能夠使用ndk中的命令,需要將ndk解壓後的路徑加入到環境變數path中,同時為了修改方便將這個路徑定義為乙個變數(在/etc/profile檔案的最後新增),即:
export android_ndk_path=$apth/android-ndk-r10
export path=$path:$android_ndk_path:$android_sdk_path/tools
進入ndk的解壓目錄:cd $android_ndk_path/samples/hello-jni
執行:ndk-build
若輸出:
...[x86] gdbserver : [x86-4.6] libs/x86/gdbserver
[x86] gdbsetup : libs/x86/gdb.setup
[x86] install : libhello-jni.so => libs/x86/libhello-jni.so
...則說明安裝成功
後記:其餘的還有:armeabi-v7a,armeabi,mips
本章介紹了ndk的安裝配置和基本測試,其最重要的目的是使交叉編譯以適應移動平台的不同硬體。
C primer之第二章
閱讀至2.5.2時,發現乙個不知道的知識點 如果某個型別的別名指代的是復合型別或是常量,那麼它用到宣告語句裡面就會產生意想不到的後果,例如下面的宣告語句用到了型別pstring,它實際上是型別char 的別名 typedef char pstring 1 const pstring cstr 0 c...
第二章 Spring Boot之Json
com.alibaba fastjson 1.2.15 在啟用的時候有二種方式 第一種方法就是 1 啟動類繼承extends webmvcconfigureradapter 2 覆蓋方法configuremessageconverters override public void configure...
Clean Code 筆記 之 第二章
這是我第二次看這本書了 clean code 的時候,第一次看的時候是,看到某世界五百強在他們的 中我竟然看不到一句注釋,現在我還記得當時的情景,當我download 下第乙份 的時候,我想在 中了解一下公司 編寫習慣以及少量的業務,在我以前的認知中,中加上很多注釋這些注釋有助於我了解業務,但是在這...