C核心技術手冊(四十)

2021-08-31 10:25:06 字數 895 閱讀 5243

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