UNIX再学习 -- 再识
到了Unix編程,因為之前有C語言的基礎吧,看了下目錄大部分內容之前都有所總結,進度應該能夠加快。不過最近有點小郁悶,申請博客專家轉正失敗了,這也讓我重新審視了自己更新博客的初心是什么。絕不是為了與自己水平不符的專家稱號,而是為提升自己。我可以問心無愧的說每天都在進步,這已經是對于自己的肯定了。發完牢騷了,現在就開始Unix新篇!
一、再識
參看的是Unix 環境高級編程(第3版),在前言中講到本書這一版中涉及的平臺中有Ubuntu12.04,正好我就在用這一版本的虛擬機。然后書中示例的源碼可以從?http://apuebook.com/src.3e.tar.gz?獲得,建議準備一本《Unix程序員手冊》作為參考手冊。我整理了下如果有需要可下載:UNIX環境高級編程
二、編譯
將下載后的源碼拷貝到虛擬機解壓,進入apue.3e目錄編譯。
tar -xvf src.3e.tar.gz?
cd apue.3e
make
出現錯誤:
gcc -ansi -I../include -Wall -DLINUX -D_GNU_SOURCE badexit2.c -o badexit2 -L../lib -lapue -pthread -lrt -lbsd /usr/bin/ld: cannot find -lbsd collect2: ld 返回 1 make[1]: *** [badexit2] 錯誤 1 make[1]:正在離開目錄 `/home/tarena/project/apue.3e/threads' make: *** [all] 錯誤 1 原因是系統缺乏對應的庫文件,詳細可?參看:關于usr/bin/ld: cannot find -lxxx問題總結
解決方法:apt-get install libbsd-dev
三、使用
編譯完成,但是我們的目的不只是為看源碼,而是自己編寫。
將頭文件拷貝到系統 include 目錄下。
cp /apue.3e/include/apue.h /usr/include/
拷貝?error.c 到系統 include 目錄下
cp /apue.3e/lib/error.c /usr/include/
注意,這里的文件是 error.c,不是 error.h,/usr/include /目錄下有一個 error.h 的頭文件。
編輯 /usr/include/apue.h 文件
在文件最后 #endif 前加上包含 error.c 的代碼:
#include "error.c"
然后將編寫程序包含頭文件。
#inlcude <apue.h>
說明:包含頭文件apue.h好理解,為什么要在頭文件上添加 error.c 呢?
舉個例子,調用?/apue.3e/exercises/openmax.c 里的函數 open_max 編譯時會出錯:
/tmp/ccb3T0PH.o: In function `open_max': openmax1.c:(.text+0x43): undefined reference to `err_sys' collect2: ld 返回 1 查看可發現 err_sys 等一系列函數是在 error.c 下定義的,所以需要添加 error.c 到頭文件。四、root用戶登錄
一般Ubuntu默認的是普通用戶進入,root超級用戶被禁用。如果執行權限操作,需要加 sudo 。所以還是建議使用root模式登錄,之前已經有總結,我主要使用的Ubuntu12.04和14.04兩個版本,其他版本自行嘗試。 參看:C語言再學習 -- Ubuntu 12.04 root用戶登錄設置參看:Hi3516A開發--使用root模式登錄Ubuntu14.04
五、登錄名設置
在/etc/passwd文件下,通常是可以改變用戶起始目錄,之前也講過。 參看:Hi3516A開發--/etc/passwd總結
以上是生活随笔為你收集整理的UNIX再学习 -- 再识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Word2Vec学习笔记(四)——Neg
- 下一篇: java面试题总结(二)----java