天天看點

《UNIX環境進階程式設計》第三版程式設計環境搭建

簡而言之,如何讓書上的例程跑起來。我使用的環境是ubuntu18.04.2

1.書上的大多數代碼都要包含apue.h,網上有很多版本,親測還是去原版官網下最靠譜。(話說自己好像已經養成習慣每次拿到一本書先把封面序言什麼的看一遍然後去官網找配套資源了,雖然這本書上面并沒有寫官網網址)

2.然後就可以參考這篇部落格

https://blog.csdn.net/t910974949/article/details/85387484

可能出現它說你make未安裝的情況,根據指令行提示把make安裝了就行

這篇部落格的第五步很重要,但它之後就說的不太清楚了。是以我們去參考下一篇部落格。

3.https://blog.csdn.net/freestyle4568world/article/details/39269129

sudo cp ./include/apue.h /usr/include/
           

指令解釋 cp是複制指令,上面的指令中跟了兩個參數,意思是把 ./include/apue.h 複制到 usr/include/去

這篇部落格就把為什麼要做這個複制解釋的很清楚,但他還沒告訴我們gcc編譯那句什麼意思

gcc -o ls1 ls1.c -lapue
           

gcc -o 意思是編譯。然後是第一個參數ls1,這個是目标檔案名。然後是ls1.c,這個是源代碼檔案。最後是 -lapue,這個部落格裡寫了,就是我們剛剛複制的那個檔案,編譯要用到它。整個指令執行的結果就是在目前目錄下生成了一個名為ls1的可執行檔案。

然後我怎麼執行這個檔案呢。。。好像各種運作方式都會出問題诶。。。

4.先看書上的執行語句

./a.out /dev
           

什麼意思呢?其實上面一句指令由兩部分組成。先是 ./a.out 這是說執行目前目錄下的a.out檔案。書上編譯生成的檔案是a.out,但我們按照第一篇部落格來的話就是ls1喽(注意我們生成的檔案沒有任何擴充名)。第二部分是/dev,其實那句的這兩部分之間是有一個空格的。這個/dev其實是一個參數,我們可以看看源代碼

int main(int argc,char *argv[])
           

argc的意思是程式名和參數數量之和,而argv是一個字元串,我們就是要展示出argv這個字元串的目錄,是以我們把 ”/dev“這個字元串傳進去,程式執行時就會顯示出/dev的目錄。是以我們的執行指令就該這麼敲

./ls1 /dev
           

這樣我們就終于把書上的第一個例子跑起來啦,可以看到/dev的目錄還蠻長的。

不過話說回來,這個dev檔案夾在哪呢?

5.我們打開桌面上的檔案圖示,看到的是主檔案夾,裡面有“公共的”,“模闆”,“視訊”等子檔案夾,但别說dev了,連之前複制過去的usr檔案夾都找不到。

我們點一下左邊菜單欄的其他位置,可以看到有一個計算機選項,點進去。

诶一個詭異的目錄就出來了,裡面有“bin”,“boot”,“dev”,"usr"等子檔案夾,我們之前操作的檔案夾就是這裡這些了。

這個目錄和之前的主檔案夾目錄又是什麼關系呢??

6.沒有第6了,我隻是個剛把unix書上第一個例程跑出來的小渣渣,我要滾回去繼續學習了