第二章 Android之NDK配置與簡單使用

2021-07-03 08:23:22 字數 1351 閱讀 6307

對於有過開發跨語言經歷的朋友而言,使用不同語言同時在乙個專案中使用不算什麼奇怪的事情,

甚至在編寫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 下第乙份 的時候,我想在 中了解一下公司 編寫習慣以及少量的業務,在我以前的認知中,中加上很多注釋這些注釋有助於我了解業務,但是在這...