一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

ndk-build生成.so

 wusiqi111 2018-06-11

設置NDK的編譯選項 Application.mk 和 Android.mk
Android NDK編譯選項設置

利用NDK生成.so可以通過Android Studio,也可以通過命令ndk-build來自己手動生成。
這里講一下用ndk-build手動生成的過程

一:下載NDK開發(fā)包

Android官方下載NDk
下載完NDK后,解壓到自己想要的路徑中

二:配置NDK系統(tǒng)變量

打開終端運行:

sudo gedit /etc/profile

在profile文件末尾添加內(nèi)容:

#set NDK env
export NDK_HOME=/home/echosea/Desktop/Android/android-ndk-r12
export PATH=$NDK_HOME:$PATH

其中NDK_HOME指向的路徑是自己解壓出來的NDK路徑
然后重啟一下電腦,重啟后打開終端使用命令

echo $NDK_HOME
echo $PATH

看到自己配置的內(nèi)容就表示設置好了

NDK環(huán)境變量
三:創(chuàng)建Application.mk和Android.mk文件

之后到自己想要編譯的文件目錄中創(chuàng)建 Application.mk 和 Android.mk

Android.mk文件,用來指定源碼編譯的配置信息,例如工作目錄,編譯模塊的名稱,參與編譯的文件等,大致內(nèi)容如下:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ndk_load
LOCAL_SRC_FILES := myso.cpp
# 添加對log庫的支持
LOCAL_LDLIBS:=-L$(SYSROOT)/usr/lib -llog
# 注:若生成static的.a,只需添加 LOCAL_LDLIBS:=-llog
include $(BUILD_SHARED_LIBRARY)
LOCAL_PATH := $(call my-dir)

  1. LOCAL_PATH:設置工作目錄,而my-dir則會返回Android.mk文件所在的目錄。
  2. CLEAR——VARS:清除幾乎所有以LOCAL——PATH開頭的變量(不包括LOCAL_PATH)。
  3. LOCAL_MODULE:用來設置模塊的名稱。
  4. LOCAL_SRC_FILES:用來指定參與模塊編譯的C/C++源文件名。
  5. BUILD_SHARED_LIBRARY:作用是指定生成的靜態(tài)庫或者共享庫在運行時依賴的共享庫模塊列表。

Application.mk文件,不一定要有,可以用來配置編譯平臺相關內(nèi)容,常用的估計只是APP_ABI字段,它用來指定我們需要基于哪些CPU架構(gòu)的.so文件,當然你可以配置多個平臺(如果ndk-build 沒有指定 Application.mk,則默認編譯出所有平臺的.so文件):

APP_ABI := armeabi armeabi-v7a x86 mips

這個文件還可以配置Android.mk文件

APP_BUILD_SCRIPT := Android.mk

Application.mk
四:調(diào)用ndk-build

之前我直接執(zhí)行 ndk-build 沒有帶任何參數(shù),結(jié)果報錯了,我也第一次用ndk-build,有點困惑,竟然忘了要去看文檔說明

錯誤信息

然后網(wǎng)上搜了一下

You need to specify 3 things.
NDK_PROJECT_PATH - the location of your project
NDK_APPLICATION_MK - the path of the Application.mk file
APP_BUILD_SCRIPT - the path to the Android.mk file

These are needed to override the default values of the build script, which expects things to be in the jni folder.

When calling ndk-build use
ndk-build NDK_PROJECT_PATH=/path/to/proj NDK_APPLICATION_MK=/path/to/Application.mk

In Application.mk add
APP_BUILD_SCRIPT := /path/to/Android.mk

然后通過以下命令就生成成功了

ndk-build NDK_PROJECT_PATH=. NDK_APPLICATION_MK=Application.mk

這里要注意一下,如果ndk-build沒有指定NDK_APPLICATION_MK參數(shù),則需要指定APP_BUILD_SCRIPT參數(shù)

ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk

參考連接:

使用AndroidStudio進行NDK開發(fā)
Android問題集錦之四十:Android NDK: Could not find application project directory



    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    大香蕉大香蕉手机在线视频| 91亚洲国产成人久久精品麻豆| 99久久精品午夜一区二| 黑色丝袜脚足国产一区二区| 日韩精品区欧美在线一区| 中文字幕佐山爱一区二区免费| 国产户外勾引精品露出一区| 免费大片黄在线观看国语| 免费观看一区二区三区黄片| 日本婷婷色大香蕉视频在线观看| 美女被草的视频在线观看| 青草草在线视频免费视频| 午夜国产精品国自产拍av| 精品国产丝袜一区二区| 亚洲免费视频中文字幕在线观看| 69精品一区二区蜜桃视频| 日韩人妻中文字幕精品| 欧洲自拍偷拍一区二区| 日韩人妻av中文字幕| 91精品视频免费播放| 欧美精品激情视频一区| 一区二区三区在线不卡免费| 久热这里只有精品九九| 97人妻精品一区二区三区男同 | 青草草在线视频免费视频| 久久福利视频视频一区二区| 国产欧洲亚洲日产一区二区| 正在播放国产又粗又长| 人妻一区二区三区多毛女| 精品熟女少妇一区二区三区| 亚洲国产av一二三区| 久久大香蕉一区二区三区| 日韩中文字幕人妻精品| 国产av大片一区二区三区| 亚洲国产成人爱av在线播放下载| 亚洲午夜福利不卡片在线 | 91亚洲精品国产一区| 韩国激情野战视频在线播放| 国产成人精品一区二三区在线观看| 国产精品久久男人的天堂| 激情综合网俺也狠狠地|