18.3.3.3
動態鏈結和共享object檔案
共享庫為特殊的
object
建立乙個共享
object
檔案,可使用
gcc的
-shared
選專案,輸入必須是乙個存在的
object
檔案。下面是乙個簡單的例子:
$ gcc -c circulararea.c
$ gcc -shared -o libcirculararea.so circulararea.o
上面第二條命令建立了共享
object
檔案libcirculararea.so
,將乙個可執行程式與共享
object
檔案連線,在命令和中像使用其他
object
檔案或庫檔案一樣對它進行命名。
$ gcc -c circle.c
$ gcc -o circle circle.o libcirculararea.so –lm
此命令建立了乙個可執行程式,它可以在執行時動態地與
libcirculararea.so
連線,當然,你必須確保程式在執行時能夠找到共享庫,這可以通過將你的庫檔案安裝在標準的目錄下,如
/usr/lib
,或設定乙個適當的環境變數,如
ld_library_path,
配置動態庫載入的機制因系統不同而有差異。
如果共享庫在你的系統上可用,但你應該避免其對潛在的惡意**開放,例如,可以使用
-static
選項呼叫
gcc:
$ gcc -static -o circle circle.o circulararea.o –lm
但這樣,生成的結果程式將比較大。
C核心技術手冊(四十二)
當編寫乙個c 程式時,首先要做的一件事是確定在多種c 的定義中遵循哪一種,gcc 的預設方言版本為 gnu c 它在很大程度上為iso iec 9899 1900 標準,以及它發布的勘誤表和許多語言擴充套件,這些擴充套件一部分已經包含在c99 中標準化了,例如複雜浮點型別和long long 整形,...
C核心技術手冊(四十二)
當編寫乙個c 程式時,首先要做的一件事是確定在多種c 的定義中遵循哪一種,gcc 的預設方言版本為 gnu c 它在很大程度上為iso iec 9899 1900 標準,以及它發布的勘誤表和許多語言擴充套件,這些擴充套件一部分已經包含在c99 中標準化了,例如複雜浮點型別和long long 整形,...
C核心技術手冊(四十二)
當編寫乙個 c程式時,首先要做的一件事是確定在多種 c的定義中遵循哪一種,gcc的預設方言版本為 gnu c 它在很大程度上為 iso iec 9899 1900 標準,以及它發布的勘誤表和許多語言擴充套件,這些擴充套件一部分已經包含在 c99中標準化了,例如複雜浮點型別和 long long 整形...