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...