android 依賴外部庫的編譯方法

2021-06-21 02:30:26 字數 2206 閱讀 8195

如果我們需要用到第三方提供的動態庫,需要先使用預編譯,把第三方的動態庫安裝到libs目錄,然後在需要呼叫的檔案的android.mk裡使用

local_shared_libraries += 來鏈結這些動態庫。

實施步驟:

1.在jni下新建乙個資料夾,把第三方動態庫放進去,並新增android.mk,形如以下:

include $(clear_vars)

local_module := ***1

local_src_files := libs/lib***1.so

include $(prebuilt_shared_library)

include $(clear_vars)

local_module := ***2

local_src_files := libs/lib***2.so

include $(prebuilt_shared_library)

include $(clear_vars)

local_module := ***3

local_src_files := libs/lib***3.so

include $(prebuilt_shared_library)

2.如果在mycode.c呼叫第三方庫函式,則在編譯mycode.c時加入依賴,形如以下:

local_shared_libraries +=  \

lib***1 \

lib***2

lib***3

後記有一次使用第三方庫,在cygwin下編譯出現下面的錯誤:

d:/software/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/.                                             ./lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot                                              open ./obj/local/armeabi-v7a/lib***1.so: permission denied

d:/software/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/.                                             ./lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot                                              open ./obj/local/armeabi-v7a/lib***2.so: permission denied

d:/software/android/android-ndk-r8e/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/.                                             ./lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: error: cannot                                              open ./obj/local/armeabi-v7a/lib***3.so: permission denied

collect2: ld returned 1 exit status

/cygdrive/d/software/android/android-ndk-r8e/build/core/build-binary.mk:450: recipe for target                                              `obj/local/armeabi-v7a/liblinphone.so' failed

make: *** [obj/local/armeabi-v7a/liblinphone.so] error 1

解決辦法:錯誤是許可權問題,於是使用chmod 777 lib***1.so,修改lib***1.so、lib***2.so、lib***3.so即可。

IV Fusion編譯所需的依賴庫

程式的視覺化基於opengl,所以編譯程式前參考以下文章安裝好opengl 然後參考謝博士的文章,安裝好glfw3 安裝好之後cmake一次,檢視是否報錯.如果出現報錯提示無法找到glm.h,則還需要裝libglm dev sudo apt get install libglm dev 安裝好lib...

opencv 編譯庫依賴問題

如果pkg config找到了 lib pc 則就說明我們有 lib pc 庫。而 lib pc 裡則定義了 header和lib的目錄位置。opencv預設pkg config只會尋找 usr share pkgconfig pc 和 usr lib pkgconfig pc usr lib64 ...

Qt程式依賴庫編譯選項

qt程式設計4個多月以來,對於工程檔案的組織一直有著更深入的理解。從起初的.pro,makefile,h,cpp,o,moc,ui.h,so等一股腦的放到工程檔案,到後來有組織的將檔案分門別類的放到各個專案子目錄下,工程目錄給人感覺越來越顯得更professinal一些了。然而對於編譯後的動態庫檔案...