導航:首頁 > 源碼編譯 > android導入靜態鏈接庫編譯

android導入靜態鏈接庫編譯

發布時間:2022-01-24 04:39:20

㈠ 怎樣將自己做的動態鏈接庫「靜態」編譯到可執行文件里

舉例文件:add.c
gcc -fPIC -c add.c /生成.o文件
gcc -shared add.o -o libmath.so /載入add.o到math動態庫
gcc test.c -L. -Lmath /test.c 為主程序
另外;配置動態庫載入器環境變數:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.

㈡ 打包android的時候怎麼引入一些靜態庫

方法1 :
人為建立上面的文件夾並將靜態庫拷入;

方法2 :
就是通過編譯配置來做上面的動作。具體如下:
1. 將動態庫的編譯部分和靜態庫的編譯部分分開;
2. 在工作目錄下建立一個lib文件夾(必須是這個名字),將第三方的靜態庫拷貝進去,並且增加一個編譯配置文件Android.mk,具體內容如下:
Android <wbr>: <wbr>編譯動態庫時如何引入靜態庫
這個編譯配置文件就是要在obj下生成中間文件,供其他地方使用。
文件列表如下:
Android <wbr>: <wbr>編譯動態庫時如何引入靜態庫

3. 在工作目錄下建立一個文件夾,並且將生成動態庫的相關文件全部拷貝進去。這里我們起的名字是src,當然也可以起其他名字。Android.mk內容如下:
Android <wbr>: <wbr>編譯動態庫時如何引入靜態庫
這里只要直接引入第三方庫就可以了。
文件列表如下:
Android <wbr>: <wbr>編譯動態庫時如何引入靜態庫
third_lib.h是靜態庫的頭文件,test.cpp很簡單,就是一個函數裡面順序調了一下靜態庫里開放的函數,內容如下:
Android <wbr>: <wbr>編譯動態庫時如何引入靜態庫

3. 工作目錄下增加一個編譯配置文件Android.mk,作用就是查找工作目錄下所有的子目錄中的Android.mk來編譯。Android.mk的內容如下:
Android <wbr>: <wbr>編譯動態庫時如何引入靜態庫
好,工作都做完了,下面進入工作目錄mm -B 試一下,可以順利編譯成功。

㈢ 如何在android studio中用JNI調用靜態庫

android ndk開發經常遇到了動態庫的問題,本文主要介紹: ① 動態鏈接庫的生成; ② 在Java和C混合編程的情況下如何調用第三方動態鏈接庫; ③ 使用dlopen程序運行時直接調用; ④ 純c的方式開發調用; 本文重點推薦②和④,第③中太麻煩每個函數都需要

㈣ Android NDK編譯如何強制使用libc++.a的靜態鏈接庫

在編譯命令行中,將使用的靜態庫文件放在源文件後面就可以了。比如: gcc -L/usr/lib myprop.c libtest.a libX11.a libpthread.a -o myprop 其中-L/usr/lib指定庫文件的查找路徑,編譯器默認在當前目錄下先查找指定的庫文件。

㈤ 動態鏈接,靜態鏈接 動態編譯,靜態編譯 動態鏈接庫,靜態鏈接庫 這些兩兩間的區別是什麼呢

有點兒亂……,分數少簡單扼要的說說吧。
————————————
首先,傳統的編譯,也就是靜態編譯是把 源文件 翻譯成目標文件,這個是一次性過程,也就是你所謂的靜態編譯。
後來的Java和.NET等語言,首先編譯成中間形式,然後運行過程中根據需要編譯成本地代碼(注意這個過程不是一次性的,下次運行重新編譯),這個就是JIT(即時編譯)技術,從即時編譯發展出了動態編譯技術
————————————
(傳統的)編譯完成後,像C/C++、Fortran、匯編等語言,可以把多個目標文件合並到一個庫文件中,這個就是靜態庫。比如常說的庫函數printf就是libc裡面的函數。
如果有了啟動函數(main),main裡面使用了printf,就可以通過靜態鏈接技術,從libc中提取出printf所在的文件加入到可執行文件中,如果printf還需要其它函數,就繼續搜索並加入列表,直到形成一個閉包。這個就是靜態鏈接。
可是靜態鏈接有個明顯的缺點,如果每個程序都需要printf,那麼printf這個函數的代碼就會同時存在在每個程序中,這樣也太佔地方了吧。所以發明了動態連接技術,其實有兩種形式。無論哪一種,都是首先記錄下需要調用printf這個函數以及所在的動態庫,等到運行的時候再載入動態庫,從動態庫中找到真正的printf去執行。
由於,動態鏈接技術需要一些額外的信息,傳統的靜態庫是不具備的,這些額外信息主要是重復載入和卸載時所需要的一些代碼,因此需要動態鏈接庫。

㈥ android導第三方庫怎麼統一編譯版本

導入成功了,你就可以使用了,你只不過不知道怎麼使用吧!看看有沒有readme之類的說明文檔,沒說明文檔那誰知道你寫的介面怎麼用,或者去網上看看

㈦ 如何把靜態鏈接庫完全打入可執行文件中

如果dll本身是動態庫,那麼 .lib 也是動態的(裡面只有函數名,沒代碼,代碼在dll中) 不能當靜態庫連接的。
你需要讓第3方做一個為靜態連接的庫(也叫 lib, 單裡面有代碼)
還有方法就是可以把exe和dll打包成一個文件,就像有些綠色軟體一樣。

㈧ android 靜態庫 怎麼push

  1. 要有adb

  2. 小機要root

  3. 用USB線連接小機和PC,在命令行下按以下順序執行

    1.adb root

    2.adb remount

    3.adb push 要push的.so push到小機的路徑

安卓如何鏈接靜態庫

關於編譯靜態庫:
android.mk和xxx.cpp放在新文件夾里:
LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \xxx.cpp
LOCAL_MODULE:= libx
include $(BUILD_STATIC_LIBRARY)
生成靜態庫libx.a文件

關於鏈接靜態庫:
有兩種方法:
1、把libx.a文件放在android.mk同一目錄下,添加:
LOCAL_PREBUILT_LIBS += libx.a
2、同上,添加:
include $(CLEAR_VARS)LOCAL_MODULE := libxLOCAL_SRC_FILES := libx.ainclude $(PREBUILT_STATIC_LIBRARY)LOCAL_STATIC_LIBRARIES += libx
貌似第二種是NDK里比較常見,第一種在其他的android.mk里比較常見。

㈩ 如何在android studio中用JNI調用靜態庫a文件

androidndk開發經常遇到了動態庫的問題,本文主要介紹:①動態鏈接庫的生成;②在Java和C混合編程的情況下如何調用第三方動態鏈接庫;③使用dlopen程序運行時直接調用;④純c的方式開發調用;本文重點推薦②和④,第③中太麻煩每個函數都需要

閱讀全文

與android導入靜態鏈接庫編譯相關的資料

熱點內容
android圖片變灰 瀏覽:268
linuxvi下一個 瀏覽:975
安卓手機的應用鎖怎麼解 瀏覽:735
linux增加路徑 瀏覽:849
sql身份證號最後四位加密 瀏覽:533
xp系統表格加密 瀏覽:856
光遇安卓軍大衣什麼時候上線 瀏覽:840
android應用商店圖標 瀏覽:341
java計算圓的面積 瀏覽:643
應用編譯優化recovery 瀏覽:577
域控命令n 瀏覽:258
php導出文件 瀏覽:15
谷歌地圖網頁版無法連接伺服器地址 瀏覽:298
菜鳥工具在線編譯python 瀏覽:858
柵格化命令有何作用 瀏覽:825
為什麼壓縮文件不能解壓 瀏覽:311
足球app哪個軟體好 瀏覽:96
產品經理逼瘋程序員的一天 瀏覽:17
修改svn伺服器ip地址 瀏覽:584
下列關於編譯說法正確的是 瀏覽:246