android.mk 詳解 其他makefile檔案類似
關於libs資料夾和obj資料夾
obj下的是帶符號和除錯資訊的,所以就大很多,靜態庫也在這個裡面。
lib下的是就去去掉這些龐大資訊後的庫檔案,而且是動態連結的庫。
方便在Android.mk中定義自己的變數,我們建議使用MY_字首
一、單個android.mk檔案LOCAL_PATH := $(call my-dir)
提示當前檔案的路徑,必須定義在檔案開頭
my-dir 返回當前Android.mk所在的目錄路徑。
include $(CLEAR_VARS)
清除一些變數的值,但是LOCAL_PATH除外
LOCAL_MODULE
指定當前待編譯模組名字,名字必須唯一,且不能含有空格,必須定義在
$(BUILD_XXXX)前面.
LOCAL_SRC_FILES:= foo.c \
toto/bar.c \
bar.c.arm
指定參與編譯的原始碼檔案,路徑是相對於LOCAL_PATH
bar.c.arm 這樣就告訴系統總是將bar.c以arm (32位 )的模式編譯
這個斜槓 \ 表示這一行與下一行連在一起,tmd,害的老子編譯半天
LOCAL_CPP_EXTENTION := .cxx
這是一個可選變數,用來指定C++程式碼檔案的副檔名,預設是'.cpp',但是你可以改變為
.cxx
LOCAL_ARM_MODE: = arm
預設情況下,arm目標二進位制會以thumb的形式生成(16位),如果你希望你的module是
以32位指令的形式,你可以通過設定這個變數為arm。
include $(BUILD_STATIC_LIBRARY)
是用來指示將當前模組編譯為靜態庫的,字首為.a,字尾為.a。
include $(BUILD_SHARED_LIBRARY)
是用來指示將當前模組編譯為共享庫,字首為lib,字尾為.so。
include $(BUILD_EXECUTABLE)表示編譯成可執行程式
二、多個android.mk檔案
將對應的模組放置在相應的目錄中,在每個目錄中定義對應的Android.mk檔案(類似於
上面的寫法),最後,在根目錄放置一個Android.mk檔案,內容如下:
include $(call all-subdir-makefiles)
只需要這一行就可以了,它的作用就是包含所有子目錄中的Android.mk檔案
all-subdir-makefiles: 返回一個位於當前'my-dir'路徑的子目錄列表。例如,看下面
的目錄層次:
sources/foo/Android.mk
sources/foo/lib1/Android.mk
sources/foo/lib2/Android.mk
如果sources/foo/Android.mk包含一行:include $(call all-subdir-makefiles)
那麼它就會自動包含sources/foo/lib1/Android.mk 和sources/foo/lib2/Android.mk。
在預設情況下,NDK將會只搜 索在sources/*/Android.mk中的檔案。
最好不要再一個android.mk中定義多個模組,否則可能出現目錄方面的 問題
三、引入第三方庫
LOCAL_STATIC_LIBRARIES: 應該連結到這個模組的靜態庫列表(使用BUILD_STATIC_LIBRARY生成),這僅僅對共享庫模組才有意義
LOCAL_CFLAGS := /
-I/home/xuxin/mylib/android-platform_external_libpcap/jni
LOCAL_CFLAGS := 主要是引用外部的C標頭檔案, 在編譯C程式碼檔案的時候使用,-I 是標頭檔案的存放路徑,如果該標頭檔案和我們自己的原始檔放在同一級目錄,則不需要配置;
LOCAL_CFLAGS := -D__STDC_CONSTANT_MACROS
-D 表示定義一個巨集,類似於#define __STDC_CONSTANT_MACROS
-Werror是編譯警告也作為錯誤資訊LOCAL_CPPFLAGS與LOCAL_CFLAGS一樣,但是對C 和C++ source files都適用
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog -lpcap -L/home/xuxin/mylib/android-platform_external_libpcap/libs/armeabiLOCAL_LDLIBS := 是引用外部庫檔案,-L是指定該lib檔案的存放路徑
例如,下面將告訴連結器生成的模組要在載入時刻連結到 /system/lib/libz.so
LOCAL_LDLIBS := -lz
常常需要在自己的C程式碼裡連結第三方提供的庫檔案,例如以.a檔案提供。此時需要修改Android.mk檔案來加進需要連線的庫。LOCAL_LDLIBS不是做這個的,一個可行的方法是使用LOCAL_LDFLAGS通知編譯器。例如
LOCAL_LDFLAGS -L$(LOCAL_PATH) -lxxxx
其中xxxx是被連結模組的名字,不含字尾和字首lib
注意-L後面使用相對路徑似乎不行。
(務必注意引數的順序)
關於libs資料夾和obj資料夾
obj下的是帶符號和除錯資訊的,所以就大很多。
lib下的是就去去掉這些龐大資訊後的動態連結庫檔案。
相關推薦
android.mk 詳解 其他makefile檔案類似
關於libs資料夾和obj資料夾 obj下的是帶符號和除錯資訊的,所以就大很多,靜態庫也在這個裡面。lib下的是就去去掉這些龐大資訊後的庫檔案,而且是動態連結的庫。 方便在Android.mk中定義自己的變數,我們建議使用MY_字首 一、單個android.mk檔案
ndk開發中的Android.mk檔案與Application.mk詳解及例項
Android.mk檔案的作用: An Android.mk file is written to describe your sources to the build system. 中文意思是:寫一個Android.mk檔案是為了向生成系統描述你的原始碼。
Android WebView詳解之檔案下載
1、佈局檔案activity_main.xml:線性佈局,TextView顯示頁面標題,WebView顯示頁面。 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android -------- WIFI 詳解
mov 取ip地址 fico alt b- else if 無線網 pan PC 今天簡單的來聊一下安卓開發中的Wifi,一些常用的基礎,主要分為兩部分: 1:WiFi的信息 2:WiFi的搜索和連接 現在app大多都需要從網絡上獲得數據。所以訪問網絡是在
Android Permission詳解
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android ViewModel詳解
1. ViewModel概述 2. 實現一個ViewModel 3. ViewModel的生命週期 4. 在fragments之間共享資料 5. ViewModel替換Loaders 6. 附加資源 1.
Android LiveData詳解
官方文件翻譯 1.LiveData概述 1.1 使用LiveData的優點 1.2 使用LiveData物件 1.2.1 建立LiveData物件 1.2.2 觀察LiveData物件
Android Lifecycle詳解(一)
官方文件翻譯 使用生命週期感知元件處理生命週期 Lifecycle Event State LifecycleOwner 實現一個自定義的LifecycleOwner 生命週期感
Android Animation 詳解
關於動畫的實現,Android提供了Animation,在Android SDK介紹了2種Animation模式: 1. Tween Animation:通過對場景裡的物件不斷做影象變換(平移、縮放、旋轉)產生動畫效果,即是一種漸變動畫; 2. Frame Animation:
Android開發詳解之onTouch和onClick詳解
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android UI詳解之顏色資源的使用
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android開發--詳解ContentProvider/Cursor的使用
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android Activity 詳解
生命週期 如上圖所示,Activity生命週期很簡單共七個生命週期函式,oncreate(),onrestart(),onstart(),onresume(),onpause(),onstop(),ondestroy(); 下面舉兩個例子來說明Activity生命週期函式呼叫關係。
Android Handler 詳解
Handler適用於執行緒間互動的一種機制。牽扯到四個類:Handler,Looper,MessageQueue,Message。 這四個類關係如下圖所示: 這個圖自己畫的,比較簡易,但是很能說明他們的關係 Handler:用於執行緒之間傳送訊息,一般Handler在主執行緒中被建
Eclipse整合Android NDK詳解
1 目錄 Eclipse整合Android NDK說明... 1 2 為什麼要用NDK?... 2 3 &nbs
Android-Application詳解
Preface 在學習一個SDK的時候,遇到了Application類的相關知識,其實之前也有學習過Application類的一些知識,但是日常開發中使用頻率不高,忘得差不多了.現在重新來總結下Application的使用 英語基礎好的可以去參考官方文件 官方文件 下面是官網對Application類
0 httpd2.2配置詳解-Apache配置檔案詳解-(二)
httpd-2.2 15 curl命令 curl是基於URL語法在命令列方式下工作的檔案傳輸工具,它支援FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE及LDAP等協議。curl支援HTTPS認證,並且支援HTTP的POST、PU
詳解build.gradle 檔案
不用於Eclipse,Android Studio是採用Gradle 來構建專案的。Gradle 是一個非常先進的專案構建工具,它使用了一種基於Groovy 的領域特定語言(DSL)來宣告專案設定,摒棄了傳統基於XML(如Ant和Maven)的各種繁瑣的配置。 專案中有兩個build.gradl
Android RecyclerView 詳解 RecyclerView的動畫實現(移除、新增、改變、移動)和自定義動畫的實現
一丶新增刪除時候的重新整理問題 先上一下效果圖吧 1.為了方便起見我們還是先新增三個按鈕分別實現新增刪除和改變 2.在Adapter中寫呼叫方法並進行重新整理 public void remove(int position){ list.re
[作業系統資訊]微軟詳解Windows 8檔案替換介面
日前微軟公佈了Windows 8對檔案複製、移動、重新命名等介面的多處改進,此後很多人詢問新的覆蓋檔案時“選擇檔案”對話方塊如何解決檔名衝突問題,微軟今天對這個問題進行了釋疑。在設計的背後,針對檔名衝突時的操作微軟提供了兩個層級的控制:首先也是最主要的,是一種針對所有檔名衝突的簡單的、一鍵解決、批量處理的操作