1. 程式人生 > >《深入理解計算機系統》關於csapp.h和csapp.c的編譯問題(轉)

《深入理解計算機系統》關於csapp.h和csapp.c的編譯問題(轉)

系統 文件中 class net 工作 inux 而且 pan div

編譯步驟如下:

1.我的當前工作目錄為/home/sxh2/clinux,目錄下有3個文件inet_aton.c csapp.h csapp.c。

2.編譯csapp.c文件,命令為gcc -c csapp.c,生成目標文件csapp.o。

3.編譯inet_aton.c文件,命令為gcc -c inet_aton.c,生成目標文件inet_aton.o。

4.鏈接目標文件csapp.o、inet_aton.o(由於csapp.c文件中有關於線程中部分,gcc編譯的時候必須帶 -lpthread,否則會出錯的),命令為gcc -o main csapp.o inet_aton.o -lpthread,生成可執行文件main,運行即可。

在解決這個問題之前,我試了試網上的辦法,不是很好,而且還是有錯誤。在此,我該正一下,也可以運行成功,但是不推薦使用。

步驟如下:

1.把csapp.h csapp.c文件放到/usr/include(看的別人的方法是放到/usr/lib下,試了試不可以)

2.在csapp.h裏面最後一行#end if之前添加:

#include <csapp.c>

其實這樣就沒有必要寫csapp.c文件了,直接把csapp.c的文件內容拷貝到csapp.h 最後一行的#end if之前。但是這樣就不能遵守接口和實現分離的原則。

3.csapp.c文件中有關於線程中部分,gcc編譯的時候必須帶 -lpthread,否則會出錯的。

4.在要編譯的文件頭添加#include <csapp.h>

5具體的指令如下:gcc inet_aton.c -lpthread。

《深入理解計算機系統》關於csapp.h和csapp.c的編譯問題(轉)