linux動態庫的建立,關於linux的動態庫

時間 2023-05-12 14:21:10

1樓:茜茜

靜態庫在程式編譯時會被連線到目標**中,程式執行時將不再需要該靜態庫。 動態庫在程式編譯時並不會被連線到目標**中,而是在程式執行是才被載入,因此在程式執行時還需要動態庫存在。 程式1:

#ifndef hello_h #define hello_h void hello(const char *name); #endif //hello_h 程式2: hello.

c #include void hello(const char *name) 程式3: #include "hello.

h" int main() 無論動態庫還是靜態庫都需要用到。o檔案來生成,先編譯生成。o檔案。

# gcc -c 1:建立靜態庫 靜態庫檔名的命名規範是以lib為字首,緊接著跟靜態庫名,擴充套件名為。

a。例如:我們將建立的靜態庫名為myhello,則靜態庫檔名就是libmyhello.

a。 # ar cr hello.

o 使用靜態庫:只需要在你的源程式中加入包含你所需要使用到的函式的宣告(即包含標頭檔案),然後在gcc生成目標檔案時候指明靜態庫就ok了(除非你包含的標頭檔案在/usr/include,庫檔案在標準庫/usr/lib,/lib下,否則你得顯示指明他們的路徑) # gcc -o hello -l.

lmyhello # ./hello hello everyone! 刪除靜態庫檔案執行。

o檔案建立動態庫 動態庫擴充套件名為。so。 # gcc -shared -fpci -o libmyhello.

so 動態庫的使用與靜態庫使用方式一樣 # gcc -o hello -l.

lmyhello # ./hello ./hello:

error while loading shared libraries: :

cannot open shared object file: no such file or directory 哦!出錯了。

快看看錯誤提示,原來是找不到動態庫檔案。程式在執行時,會在/usr/lib和/lib等目錄中查詢需要的動態庫檔案。

若找到,則載入動態庫,否則將提示類似上述錯誤而終止程式執行。

2樓:匿名使用者

你生成a的時候用-lb指定載入b就行了。

3樓:

動態庫可以不通過-l指定。dlopen這個函式就行。

4樓:匿名使用者

這個問題比較高公升。

關於linux的動態庫

5樓:匿名使用者

改核心。。。

這個提示屬於std err,如果你是不想讓提示顯示在螢幕上,可以執行程式時加2& >dev/null,但這樣會導致所有的stderr都被重定向。

linux 動態庫鏈結

6樓:匿名使用者

ln -s

然後改許可權 chmod 777 即可~~~如果有 說明有鏈結了?為什麼還要鏈結?!!

linux中為什麼多個程序之間可以共享動態庫?

7樓:精靈小將

如果不共享的話不是要浪費空間嗎。

8樓:所以放在心上

你有的東西一起用!我有的東西也給你用!

c++檔案如何在linux下生成動態庫so,以及如何使用這個動態庫

9樓:匿名使用者

用g++指定引數可以生成動態庫,使用動態庫的話就用dlopen() 和 dlsym()

關於cad建立動態塊的問題,關於CAD建立動態塊的問題

綠色森林 類似你的序號動態塊問題,我以前弄過,可惜長時間不弄,都忘了。我弄的是機械的表面粗糙度動態塊,插入時,在輸入需要的粗糙度數值。現在就一直用著它。我沒事了在熟悉一下。 建立動態塊的步驟 1 單擊 工具 選單 塊編輯器 2 在 編輯塊定義 對話方塊中執行以下操作之一 a.從列表中選擇一個塊定義。...

有關IE的動態庫檔案問題,有關IE的動態庫檔案問題

c progra 1 3721 helper.dll這是上網助手的乙個檔案,上網助手不解除安裝乾淨的。加上網助手已經改為雅虎助手了,還要的話雅虎網助手頻道去重灌安裝也行。http cn.zs.yahoo.com先手動去掉這個出錯資訊 從開始 執行,輸入regedit 開啟視窗上,點選單欄檔案,匯出命...

linux建立的呼叫oracle的shell

本來寫了不少了,嘛的,baidu又讓我宕機了,煩死了。那就少說一點,見諒啊。1 today date y m d 要在sqlplus的上面,這個是linux命令,資料庫不認識。不要用單引號,而應該用反引號。2 各個set設定在spool的外面,而且感覺少了乙個set echo off 而且各個set...