導航:首頁 > 操作系統 > linuxeclipse動態庫

linuxeclipse動態庫

發布時間:2022-09-27 02:23:24

1. 怎樣在eclipse添加引用的動態庫

你說的動態庫,就是c/c++寫的 so庫吧
關於so庫的使用,建議你到官網下載NDK NDK那裡有一堆的調用例子
首先你要將so庫文件復制到 libs目錄下的armeabi目錄下
然後用java建立一個java與c/c++通信的本地方法

2. 如何讓linux載入當前目錄的動態庫

linux 載入當前目錄的動態庫的方法是:設置合適的環境變數LD_LIBRARY_PATH。
設置方法有以下三種:

1、臨時修改,log out之後就失效
在terminal中執行:export LD_LIBRARY_PATH=./

2、讓當前帳號以後都優先載入當前目錄的動態庫
修改~/.bash_profile在文件末尾加上兩行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH

3、讓所有帳號從此都優先載入當前目錄的動態庫
修改/etc/profile在文件末尾加上兩行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH

3. linux動態庫和靜態庫的區別

動態鏈接庫和靜態鏈接庫一般是編譯集成一系列的介面(函數)
在程序源代碼編譯完成後通過編譯器編譯並通過鏈接器與這些庫進行鏈接
動態鏈接庫與靜態鏈接庫的區別在於鏈接器在進行鏈接時靜態庫會被直接編譯進程序里
而動態鏈接庫並不會,我們這里將這些鏈接庫稱作依賴(動態庫和靜態庫)
程序的運行需要這些依賴,程序在靜態鏈接後該程序本身便已包含該依賴
而動態鏈接後的程序本身本不包含該依賴,這些依賴需要執行者自行安裝進操作系統(動態庫、運行時庫)
程序運行時會動態地載入這些庫

linux上動態庫一般的後綴後為.so
靜態庫一般的後綴為.a
由於靜態鏈接會直接將庫編譯進程序里所以靜態編譯後的程序相較於動態鏈接所要大
這就是因為靜態鏈接會將鏈接庫編譯進程序里的原因,所以佔用就要大了
出於這種原因,靜態庫不易於維護與更新,如果鏈接庫中有實現有bug等需要更新則需要更新整個程序,因為靜態庫被編譯進程序中了
但動態庫就沒有這種情況了,因為動態庫是程序運行時動態載入的,所以我們只需要更新動態庫而不需要更新所有依賴該庫的程序(軟體)

另一方面,很多程序的開發都會使用到相同的鏈接庫,也就是很多程序(軟體)會有相同的依賴
如果將這些依賴全部靜態編譯的話將會造成存儲資源佔用過多而造成資源浪費
而使用動態庫的方式這些程序(軟體)則可以共享一個鏈接庫,而不需要每個程序都帶一個鏈接庫,這樣就大大地減少了存儲資源佔用空間

4. linux eclipse c 怎樣編譯鏈接三方動態庫

電腦上的CPU為 x86,手機CPU為ARM架構,你的動態鏈接庫必須要ARM版Gcc編譯器編譯後才能跑在手機上,Android NDK裡面附帶了一個ARM版的編譯器,你用NDK的編譯器重新編譯,然後就可以用JNI調用了,JNI調用不是一言兩語能說清的,有專門的教程

5. eclipse怎麼鏈接動態鏈接庫

前面的博客中講了在window下C工程中封裝dll和lib,在linux下同樣需要封裝動態鏈接庫,linux下的動態鏈接庫名稱以lib開頭,擴展名為.so。下面記錄在linux下用Eclipse進行C編程時封裝動態鏈接庫的方法和向工程中添加動態鏈接庫的方法。 一、創建動態鏈接庫 1、創建工程 new->project->c++ project 選擇Shared Library->Empty Project.輸入工程名a,點擊finish,完成工程的創建。 2、編寫代碼

6. 關於linux下連接動態庫問題

gcc編譯時,當使用動態庫編譯可以按照幾種寫法
1.gcc test.c ./libSDL2-2.so
2.gcc test.c -lSDL2-2
3.gcc test.c -L/home/test -lSDL2-2
一般的編譯參數都是按照2或3去寫
2寫法的含義是從/lib或者/usr/lib目錄下尋找名稱為SDL2-2的庫,即尋找/lib/libSDL2-2.so或者/usr/lib/libSDL2-2.so文件進行鏈接,當然如果沒有動態庫就會去找靜態庫,再沒有應該就會在編譯時報錯
3寫法的含義是從-L參數首先從指定的目錄中尋找需要鏈接的庫文件,隨後再去尋找系統文件夾中是否存在需要的庫
1寫法的含義是將當前目錄下的./libSDL2-2.so.0文件鏈接進最終文件,因此執行readelf -a a.out後在動態庫部分所看到的路徑就是./libSDL2-2.so.0,進而在執行文件時僅會從當前目錄下尋找libSDL2-2.so.0文件,當執行文件時所在的目錄下沒有該文件時就會出現找不到庫文件的操作

你第二次操作時,因為function.so庫文件與a.out文件在同一個目錄,同時也是在該目錄下執行的ldd操作及運行a.out,a.out在載入動態庫時從當前目錄下找到了所需要的庫文件,此時能夠執行成功(ldd命令實質是一個腳本,通過設置環境變數運行動態庫鏈接器來輸出所有待鏈接的動態庫)。
你可以試試將a.out拷貝至其他目錄再次運行,將出現和第一次操作時一樣的現象,找不到function.so文件。

具體的解決方法就是修改編譯參數,將./libSDL2-2.so.0修改為-lSDL2-2並將libSDL2-2.so.0文件拷貝至/usr/lib目錄下,並且可能因為沒有修改鏈接器的緩存文件(將可能找不到帶版本號後綴的動態庫),需要在/usr/lib目錄下建立一個文件連接(ln -s libSDL2-2.so.0 libSDL2-2.so)或者直接修改名稱為libSDL2-2.so

7. Linux下的靜態庫和動態庫

靜態庫

可以把它想像成是一些代碼的集合,在可執行程序運行前就已經加到了代碼中,成為了執行程序的一部分,一般是以.a為後綴的文件名,Windows下後綴為.lib。靜態庫的命名也分為三部分,1、前綴:lib,2、庫的名稱:隨意,如lisi,3、後綴:.a。

靜態庫優缺點

上面簡單介紹了靜態庫,那它自然也會有優缺點,這里來介紹下它的優缺點。

優點:1、在最後,函數庫是被打包到應用程序中的,實現函數本地化、定址方便、高效。2、程序在運行的時候,與函數庫沒有關系,移植性更強。

缺點:1、消耗資源較大,每個進程在使用靜態庫的時候,都要復制一份才可以,這也就造成了內存的消耗。2、在程序更新、部署、發布的時候,使用靜態庫相對麻煩,如果一個靜態庫更新了,那它的應用程序都需要重新編譯,再發送給用戶,有的時候可能只是一個小的改動,但對於用戶來說,會導致整個程序重新下載。

動態庫

在程序編譯時不會被連接到目標代碼中,在後期運行時才會載入,不同的應用程序如果調用相同的庫,內存中只有一份共享庫的拷貝,也就避免了空間的浪費問題。一般以.so作為文件後綴名,也分為三部分:1、前綴:lib,2、庫名稱:自定義,3、後綴:.so

動態庫優缺點

優點:1、節省內存2、部署、升級相對方便,只需要更換動態庫,再重新啟動服務即可。

缺點:1、載入速度比靜態庫慢2、移植性較差,需要把所有用到的動態庫進行移植。

8. 如何在linux下面開始閱讀開源程序(eclipse)

今天終於找到點方法,記下來 閱讀調試環境是在Eclipse 1. 將開源工程安裝 安裝的時候,要注意安裝為debug的,這個目錄一般安裝到自己的學習目錄即可吧 如: ./configure --prefix=/home/godpig/study/opensrc --enable-debug 然後再 make以及make install 這個時候,在/home/godpig/study/opensrc目錄下面,已經有安裝好的程序了,裡麵包括 include、lib等子文件夾 在開發的時候,include是要被包含的頭文件所在的目錄,lib是開發庫 2. 打開eclipse,新建一個HelloWorld的工程 寫一個簡單的調用這個開源項目的代碼,保存為HelloWorld.c即可,也可以直接從開源工程裡面找example。 然後開始配置環境 右鍵當前測試工程 - Properties - c/c++ build - settings 這個時候在右邊選項卡里,第一個選項卡默認就為:Tools Setting Toos Setting - GCC Compiler - Directories 添加include目錄,即:/home/godpig/study/opensrc/include Toos Setting - GCC Linker - Libraries 在Library search path中添加庫目錄,即:/home/godpig/study/opensrc/lib。 在Libraries中添加上需要鏈接的庫,如:opensrc,這個時候會自動搜索libopensrc.a。(但在我這兒有問題,需要在GCC Linker的Command中,手動在gcc指令之後添加鏈接選項: -lopensrc 才行) 這樣,頭文件會自動從那個include中搜索,庫會自動lib中搜索 3.開始單步調試 這個時候就可以編譯這個HelloWorld了,應該可以編譯鏈接成功 如果直接Debug無法執行程序,可能出現找不到opensrc.so等錯誤,這可能是你的那個lib目錄,即:/home/godpig/study/opensrc/lib不在系統的LD_LIBRARY_PATH環境變數中,無法自動載入動態庫(如果安裝的時候,沒有用--prefix指定自定義的目錄,一般不會出現這個問題吧) 如果出現了找不到opensrc.so的錯誤,則需要修改系統的LD_LIBRARY_PATH,或者在eclipse中配置Debug的這個環境變數方法如下:點Debug的那個圖標,下面有個Debug Configurations - Environment - New 這個時候把LD_LIBRARY_PATH作為名字,/home/godpig/study/opensrc/lib作為值填進去,保存這個時候再單步調試,一切ok了~:-)

9. 如何使用Eclipse的NDK開發動態庫,靜態庫

1.動態庫:

一、創建動態鏈接庫1、創建工程new->project->c++ project選擇Shared Library->Empty Project.輸入工程名a,點擊finish,完成工程的創建。

2、編寫代碼在windows下封裝動態鏈接庫時對要封的函數要用__declspec(dllexport)來標明,在Linux下不用,在linux下只需要直接把要封的函數的聲明放到一個。h文件中,要用這個庫時將相應的。h文件載入到工程中。

3、生成動態鏈接庫編譯代碼,成功後在Debug目錄下會生成liba.so文件。

二、動態鏈接庫的使用1、創建工程new->c++ project->Executable->Empty Project.工程名為libr 2、編寫所需代碼,並將相應的。h文件放到工程目錄下並載入到工程中。

3、加入動態鏈接庫liba.so右鍵工程Properites->C/C++Build->Settings,然後如下圖



編譯通過!
為了我們的程序能夠正確載入,我們需要讓我們的程序在我們的系統范圍內也能夠找到我們的庫。這時候我們需要在設置一下。

閱讀全文

與linuxeclipse動態庫相關的資料

熱點內容
淘寶想多開店怎麼租伺服器 瀏覽:580
小鹿情感app怎麼打不開了 瀏覽:325
可自編譯的C 瀏覽:62
vfl90壓縮機是哪個廠家 瀏覽:677
安卓系統游戲怎麼開發 瀏覽:410
抖助力app綁定的銀行卡怎麼辦 瀏覽:466
我的電腦文件夾打開方式 瀏覽:931
東莞加密u盤公司 瀏覽:137
graphvizlinux 瀏覽:438
智能手錶藍牙怎麼下載app 瀏覽:293
女程序員下班菜譜 瀏覽:260
加密貨幣買什麼比較靠譜 瀏覽:277
用圖片的地圖再編譯的地方 瀏覽:462
python監控系統進程 瀏覽:236
群暉怎麼取消照片共享文件夾 瀏覽:156
程序員那麼可愛第幾集陸璃懷孕 瀏覽:615
西門子st編程手冊 瀏覽:59
mt4編程書籍 瀏覽:21
單片機模擬實驗設置電壓 瀏覽:948
如何用電腦打開安卓手機內存 瀏覽:860