很快的Linux程式設計來到了第二堂課了
這個禮拜老師為了顧及後來才加選進來的同學
所以前半部又簡單講解了一次Virtual Box的相關操作
因此這禮拜的進度可說比上禮拜還要少...
這次上課的主要目標在熟悉Xubuntu的終端機操作
由於我們還是Linux作業系統的初學者
要是有高手"路過"至此,請別笑我"怎麼這麼簡單的東西也要筆記"
《 上次筆記補充 》
第一篇安裝CodeBlock的部份,有兩行新指令需要補上(原文已修改)
wget http://lgp203.free.fr/public.key
apt-key add public.key
這兩行的意思是到網路上去下載更新文件的public key
由於我們下載完全都是照著該網站所提供文件的下載網址
要是該文件經過黑客竄改,就有可能下載到木馬或是病毒
所以加上這個public key,可以保證下載文件是由該網站提供的
《 將虛擬硬碟帶著走 》
上次我們學到了如何使用Virtual Box跟安裝Xubuntu
但我每到有還原卡的學校電腦,難道都得從頭裝一次嗎?
其實不用這麼麻煩
我們只要把之前產生的虛擬硬碟給打包帶走就行了
首先,把上次產生的vdi檔帶走
由於我們產生的虛擬硬碟主要只裝了Xubuntu跟CodeBlock
所以硬碟有大半部是空的
可以用壓縮軟體把該檔案壓縮起來
根據老師壓縮的結果,可以把4 GB的檔案壓到剩8XX MB喔
這樣的檔案大小,就可以放到隨身碟或燒到DVD光碟裡了
到了一個新的地方後,先安裝好Virtual Box
然後[檔案]-[虛擬磁碟管理器]-[硬碟]
上次選擇"新增",這次請選擇"加入",選取該vdi檔
請注意如果你把檔案燒在光碟上,最好是複製到硬碟
因為該檔案會一直存取,光碟上無法寫入可能會有錯誤
接著跟上次新增虛擬電腦一樣
除了硬碟部份要選擇剛剛加入的那顆,其他選項皆相同
這樣就會得到一個已經裝好Xubuntu的虛擬電腦了
省下許多重裝的時間
我們學校本身也有裝Ubuntu,裡面一樣有終端機,一樣有gedit
懶得把vdi複製到硬碟的話也可以直接使用Ubuntu來寫程式
《 編譯C程式 》
終於要開始寫程式了
如果上次有裝gedit的話,他放在[公用程式]-[文字編輯器]
我們先隨便打一段程式來測試
咦?為什麼不是Hello World?因為Hello World我已經看膩了(  ̄ ﹀ ̄)y-~
高興的話改成Hello Moto(你好機車)也可以,這不重要。
存到根目錄後(檔名我設為hello.c)
他會根據副檔名自動將Highlight Mode改成C語言
不過這個配色實在是...
現在開啟終端機,輸入gcc hello.c開始編譯
然後就會出現error了(如 錯誤: stdio.h:沒有此一檔案或目錄)
會這樣並不是因為我寫錯,而是因為Xubuntu並沒有內含C語言函式庫檔案
無法編譯的話,請在終端機輸入以下兩行指令,安裝函式庫
安裝完後就可以正常編譯了
apt-get install build-essential
apt-get install libncurses5-dev
編譯程式有以下四種方法
1. gcc hello.c
2. gcc -o hello hello.c
3. Create Makefile, 使用make
4. 使用 codeblocks
第一種直接編譯的話,檔名預設是a.out
想改編譯的檔名的話,請用第二種方式,後面接上-o跟檔名
如果使用CodeBlock的話,就不用記這些東西了
要執行程式的話,請輸入./a.out(注意前面一定要加./)
另外在編譯時後面接著此行指令可以編譯後馬上執行,如gcc hello.c; ./a.out
以下是執行結果
《 終端機操作雜項 》
‧如果開啟Xubuntu時進到文字介面,要切換成圖形介面的話請輸入startx
‧終端機後面的符號為$代表一般使用者,#代表最高使用者
‧終端機清除畫面指令為clear(MSDOS則為cls)
‧終端機輸入free可看使用記憶體狀態
‧上次用root權限打開的sources.list是shell script
要語法高亮度請按[View]-[Highlight Mode]-[Scripts]-[sh]
前面的#代表為註解
‧終端機輸入man printf看有關printf的說明時
卻發現這個說明不是C語言的printf語法而是指令
原來上面顯示PRINTF(1)代表這是printf的第一份說明
先輸入man -wa printf會顯示所有同名語法,發現有1跟3兩種
所以我們輸入man 3 printf,就是正常的說明了
再提醒一次,離開說明畫面請按Q
‧ls是檔案列表指令,會列出目前位置的所有檔案跟目錄
綠色代表檔案,藍紫色代表目錄
以下列幾個比較常用到的參數(其餘請參考man ls)
1. ls -l 詳細資料
2. ls -a 顯示隱藏檔
3. ls -F 目錄後面加/
‧每次要顯示詳細資料都要打ls -l很麻煩
所以可以自己建立快速指令(類似批次檔)
alias ll='ls -l' - 輸入ll的時候就等於輸入ls -l
unalias ll - 將ll這個指令拿掉
cat .bashrc - 可以看alias的所有紀錄
‧mkdir class - 建立名為class的目錄
mv hello.c class/ - 原本是改名,但這樣是將hello.c搬動到class目錄
mv指令必須要有root權限,mkdir卻不用...
《 練習更改檔案權限 》
請先用gedit新增一個檔案輸入以下兩行存檔
檔名可叫「showtime」(不是好戲上場的意思)
echo 現在時間為:
date
輸入./showtime執行,卻會出現錯誤訊息:
bash: ./showtime 拒絕不符權限的操作
即使已經有root權限依然沒用
所以我們要修改檔案的屬性
輸入chmod +x showtime修改屬性
再輸入./showtime即可看到成果
《 常用套件管理命令 》
1. apt-get update - 檢查套件是否有更新
2. apt-get install 套件名稱s - 安裝套件(可接複數個)
3. apt-get remove 套件名稱s - 移除套件
4. apt-cache search 套件名稱 - 搜尋套件
5. dpkg -l - 列出目前安裝所有套件
6. apt-get dist-upgrade - 將所有套件更新至最新版
範例:
apt-cache search music
會搜尋所有跟music相關的套件
《 關於檔案編譯 》
‧objdump a.out - 可看所有能對他下的指令
‧objdump -d a.out - 看該檔的組合語言
‧strip a.out - 幫檔案減肥
由下圖可發現原本的6.3 kb變成2.9 kb,一下縮減了53%的容量
這招對於硬碟容量小的嵌入式系統(手機、PDA)來說是很重要的
‧strip -R .comment a.out - 拿掉檔案的comment
拿掉comment後程式還是可以正常執行沒問題
至於有什麼東西是可以拿掉的...就要憑經驗了
‧gcc -o staticExec -s hello.c -static - 將檔案用靜態連結編譯
讓需要動態連結的檔案都包進來編譯
好處是如果需要動態連結的檔案壞掉了,一樣可以執行
壞處是檔案會暴增非常多(495 kb,是動態連結的78倍)
‧gcc -S hello.c - 編譯成組合語言
同目錄下會產生hello.s檔,內容為hello.c的組合語言
好康道相報
※欲轉貼本站文章者,只要註明出處及網址即可,不需我同意了,謝謝您的配合
※留悄悄話的網友請注意:如果您非痞客邦會員(包含使用FB/Google+帳號),是看不到回覆的喔
※痞客邦會自動將疑似廣告留言隱藏,因此若留言後看不到,可能是被系統自動隱藏了,由於我現在很久才會開一次網誌,有看到時我才會將非廣告留言解開,敬請見諒
※留悄悄話的網友請注意:如果您非痞客邦會員(包含使用FB/Google+帳號),是看不到回覆的喔
※痞客邦會自動將疑似廣告留言隱藏,因此若留言後看不到,可能是被系統自動隱藏了,由於我現在很久才會開一次網誌,有看到時我才會將非廣告留言解開,敬請見諒
- Sep 19 Fri 2008 17:12
Linux程設學習筆記(二)
全站熱搜
留言列表