編譯第乙個檔案

2021-06-22 21:16:41 字數 1098 閱讀 5872

apue中有很多例項,比如第4頁中圖1-3中描述了乙個簡單的類似ls命令的c程式。幾乎所有例子都會引用乙個apue.h標頭檔案。這個標頭檔案是作者自己實現的,起到遮蔽平台相關實現的作用。直接編譯圖1-3中的程式是沒法通過的,因為缺少apue.h這個標頭檔案。

那該怎麼編譯這個例項呢?需要做下面幾件事情:

編譯源**。只需要在apue.3e目錄下執行make就可以完成編譯。不過我編譯是遇到缺少-lbsd的錯誤,需要執行sudo apt-get install libbsd-dev來安裝libbsd-dev,然後編譯就能正常結束了。編譯完成後,在apue.3e/lib下會產生libapue.a,這個是書中例項所需要的lib檔案。

把apue.3e轉移到合適的位置,比如/usr/local/lib,這只是個人習慣。

編譯書中的例項,例如gcc myls.c /usr/local/lib/apue.3e/lib/libapue.a -i /usr/local/lib/apue.3e/include,應該就能正常編譯了。

意識到也該是時候學習makefile的寫法了,於是參考寫了乙個makefile,這樣只需要執行make就能完成編譯了。makefile檔案內容如下(相信並非最優的寫法):

#變數定義,變數的引用以$(variable)的形式

root=/usr/local/lib/apue.3e

cc=gcc

cflags=-wall

libapue=$(root)/lib/libapue.a

include=$(root)/include

all:myls.o

$(cc) myls.o $(libapue) -o myls

#-c表示只編譯不鏈結,如果不加會報錯,因為err_quit和err_sys需要到對於的lib檔案裡找

myls.o:myls.c

$(cc) -c myls.c -i $(include)

clean:

rm -rf *.o myls *.out

執行生成的可執行檔案,得到如下輸出:

python第乙個程式設計 第乙個 Python 程式

簡述 安裝完 python 後,windows 中 開始選單或安裝目錄下就會有 idle 開發 python 程式的基本 ide 整合開發環境 幫助手冊 模組文件等。linux 中 只需要在命令列中輸入 python 命令即可啟動互動式程式設計。互動式程式設計 互動式程式設計不需要建立指令碼檔案,是...

linux第乙個驅動模組編譯

我們的源程式是乙個簡單的程式 include include module license dual bsd gpl static int hello init void static void hello exit void module init hello init module exit h...

Fluter 編譯第乙個iOS應用

一 流程說明 1 fluter是乙個跨平台ui庫,可以乙份介面 在ios和android上面執行 2 在mac上面安裝fluter的環境,相對比較簡單,通過簡單的命令列可以設定環境 3 可以使用特定ide,可以熱除錯 4 官方說dart和swift和oc可以混合使用,下一次探索這一點 二 安裝步驟 ...