LOCAL_SHARED_LIBRARIES 與 LOCAL_LDLIBS,LOCAL_LDFLAGS的區別

whatnamecaniuse發表於2014-10-22

http://blog.csdn.net/xdonx/article/details/8330847



LOCAL_LDLIBS :連結的庫不產生依賴關係,一般用於不需要重新編譯的庫,如庫不存在,則會報錯找不到。且貌似只能連結那些存在於系統目錄下本模組需要連線的庫。如果某一個庫既有動態庫又有靜態庫,那麼在預設情況下是連結的動態庫而非靜態庫。

如:LOCAL_LDLIBS += -lm –lz –lc -lcutils –lutils –llog …

如果你的Android.mk檔案中只有這麼一行,那麼將會採用動態連結。

 

 

LOCAL_SHARED_LIBRARIES 會生成依賴關係,當庫不存在時會去編譯這個庫。

 

 

LOCAL_LDFLAGS:這個編譯變數傳遞給連結器一個一些額外的引數,比如想傳遞而外的庫和庫路徑給ld,或者傳遞給ld linker的一些連結引數,-On,-EL{B}(大小端位元組序),那麼就要加到這個上面,如:

LOCAL_LDFLAGS += -L$(LOCAL_PATH)/lib/ -lHWrecog –EB{EL} –O{n} …

或者直接加上絕對路徑庫的全名:

LOCAL_LDFLAGS += $(LOCAL_PATH)/lib/libHWrecog.a –EB{EL} –O{n}

 

 

注:如果是非系統的第三方庫,貌似只能用LOCAL_LDFLAGS方式,LOCAL_LDLIBS方式不行。

 

參見:

http://shaobin0604.iteye.com/blog/1170266

http://blog.csdn.net/lizhiguo0532/article/details/7219349