2013年5月25日 星期六

[教學] Windows 上免費的 C/C++ 開發環境 (Cygwin + Eclipse JUNO)

前言

這篇是寫給想學 C/C++ 的新手看的,內容是教新手如何安裝不花錢的 C/C++ 開發環境。因為個人習慣和喜好,我是使用 cygwin 與 Eclipse 的環境。

需要安裝的有
  • Cygwin - 在 Windows 上模擬 Linux 的使用介面,裏面有免費的 C/C++ Compiler。
  • Eclipse - 本來是給 Java 開發者使用的 IDE,也有支援 C/C++ 的版本。

安裝 Cygwin

  • 開啟 http://www.cygwin.com 的網頁。
  • 對網頁上的 setup.exe 按滑鼠右鍵下載並執行。
  • 執行後,連點幾次的 "下一步",會要你選擇離你最近的 FTP 站,如果是在台灣的話,就選台大的 ftp://ftp.ntu.edu.tw 吧。


  • 繼續下一步,到 Select Package 頁面,點 Devel 右邊的 Default 改成 Install 要求完整安裝。Devel 是 Development 的意思,就是要安裝所有跟開發有關的軟體。

  • 繼續點幾次的 "下一步" 直到開始安裝。第一次的安裝時間很長,請耐心等候。
  • 安裝完成後,先將 cygwin 的 Bin 目錄的路徑 (如果沒有亂改,就是 C:\cygwin\bin) 加入 Windows 系統參數 PATH 中。
    1. 開始 -> 控制台 -> 系統 -> 進階系統設定 -> 環境變數
    2. 系統變數中點 PATH,並點編輯按鈕
    3. 在 PATH 的最後加入 c:\cygwin\bin,記得用分號 ";" 跟前一個路徑分開

  • 查看 C:\cygwin\bin 下 gcc.exe 和 g++.exe 的大小,如果小於 1K,表示那只是連結,非真實的執行檔。所以:
    1. 隨意將 gcc.exe 和 g++.exe 改名。
    2. 將 gcc-3.exe 或 gcc-4.exe 改成 gcc.exe。
    3. 將 g++-3.exe 或 g++-4.exe 改成 g++.exe。
  • 點 Windows 開始,在最左下的搜尋框中打 cmd 開啟 Windows Console。
  • Console 下打入 "gcc -v" 確認是否 PATH 和 gcc 有正確連結。正確的結果長的有點像:



  • 恭喜,免費的 C Compiler 已經可以使用了。

安裝 Eclipse

理論上有了 gcc,開發者就能用任何一種文字編輯軟體,像是 Windows 內附的記事本 (Notepad),來寫 C 語言的程式。但是拿個記事本寫程式也太找自己麻煩了,這時就要用 Eclipse 這種 IDE (Integrated Development Environment) 工具來輔助自己,別讓寫程式變成一件痛苦的事。

Eclipse 本來是 Java 的 IDE,但是現在也有給 C/C++ 使用的版本了,叫 Eclipse CDT (C++ Development Tooling)。請先到這網站下載最新的 Eclipse CDT http://www.eclipse.org/cdt/

下載後,找個地方把壓縮檔解開,解開後,裏面會有一個 Eclipse 的執行檔。點二下執行即可,不需要安裝。
  • 執行後,它會問你 workspace 要放在哪,意思是問你程式寫好是存在哪裏的意思。隨便選個空間夠的地方吧。如果不想每次都被問,勾選下次不要再問我的選項。
  • 執行後,先把 Welcome 的頁面關掉吧,除非你真的想花時間去讀它。
  • 如果之前的 PATH 有設定對,gcc/g++ 都能正確的執行,那 JUNO 版本是不用任何的額外設定的。JUNO 以前的版本要,不過沒人會去用舊的 Eclipse 才是。
  • 點左上方 Menu 的 File -> New -> C Project 開始你第一個 C Project 吧。
  • 填入 Project Name (我是用 HelloC),並再下方的 Executable 選 "Hello World ASNI C Project",然後連續點幾個 "Next" 鈕,直到 Finish。
  • 點左上角的鎚子,或是直接點 Ctrl + B 開始編譯這個 Eclipse 幫你寫好的 Hello World 程式,編完後,在你 workspace 下的 \HelloC\Debug\ 就會有一個 HelloC.exe 了。
  • 用 Windows Console 執行這個執行檔吧! 恭喜囉,有免費的 C/C++ 軟體可以用了,合法又不花錢喔。^_^


小秘訣: 如果覺得自己程式明明沒錯,但 Eclipse 還是一直報錯要你改,請先用 File -> Save All 存個檔,也許能解決問題。

直接用 GCC 編譯剛剛的 HelloC 的程式



這段是寫給真正的初學者看的。

IDE 雖然好用,但是如果初學者太習慣 IDE,有時會對 "寫程式" 這件事有點誤解,所以來玩玩看吧。
  1. 點 Windows 的開始,在搜尋中打 cmd,開啟 Windows Console
  2. 用 cd 指令將目錄移到 eclipse 的 workspace\HelloC\src 下。在 src 目錄下會有一個 HelloC.c 的檔案,用筆記本打開後,會發現這就是剛剛自動產生的 C 程式。
  3. 在 Windows Console 下打入下面的指令 "gcc.exe HelloC.c"
  4. 用 dir 看目錄下所有的檔案,會發現多了一個 a.exe。
  5. 執行 a.exe... 疑? Hello World 又出來了。
簡單的說... gcc 就是把程式變執行檔的東西,這東西有個專有名詞,叫 Compiler。

完 ^_^)/

2013年5月8日 星期三

[開箱] Dell R610 開箱與 CentOS 6.2 安裝

(這是一年多前的舊文章,只是換個網誌擺囉。)


等了三周,二台 Dell R610 終於到貨了。這是我第一次碰這種伺服器,而且也是第一次安裝 CentOS (VirtualBox 裝的不算...),所以寫篇網誌記錄一下開箱與安裝的過程。

對這二台 Dell R610 的第一感覺是... 怎麼會這麼重又這麼大箱啊?! 拿五公斤貓和 PS3 手把當比例尺的話大概像這樣:



















警告! 精密伺服器不該放在家中,因為熱、噪音、和電磁波對人體有害。更不該放在有養貓的家中,因為貓毛對伺服器有害!... 囧rz

我是不得以暫時放放,請不要學我。

開箱後,主機長的是這樣。


因為是 R610 是機架式伺服器,所以除了主機外,也附了左右二根滑軌,讓主機可以插入機架的某一層中。


但我家只有給貓用的貓架,根本沒有機架啊!只好將書房清一塊空間,先大掃除一番,再把 Honeywell 空氣清淨機搬進去吸個幾個小時,最後搬四塊陽台的水泥磚當基座,就成了克難的機房了。 


接下來,將下載下來的 CentOS 6.2 x86_64 ISO 檔燒成二片 DVD,再照那本只有二頁的說明書把電源、螢幕、和 USB 滑鼠與鍵盤接上,就可以壓下正面左方那個的圓圓發光的電源鈕了。

如果運送過程中機器沒掉到水裏,營幕上應該會看到藍藍的 DELL 商標。接下來右上方會有


  • F2 - System Setup
  • F10 - System Service
  • F11 - Bios Boot Manager
  • F12 - PXE Boot

選擇 F11 進入 Bios Boot Manager,會有幾個 Boot 的選項。插入 CentOS 6.2 的第一片 DVD,然後選第二個 "SATA Optical Drive" 從光碟開機。



再來就是標準的 CentOS 安裝了。先問你要不要 Test Media,選不要可以省點時間。



接下來就是標準的 CentOS 安裝了,先看到美美的 CentOS 6 畫面,再來就是語言、時區、地點、主機名稱等等設定。




再來輸入 Root 密碼,記得混用大小寫、數字和符號。不然哪天被自稱是駭客的中二生用字典檔猜出來會很爆笑的。


安裝方法我是選 Use All Space,因為這台是... 第一次...。因為要將幾個主要的區塊分割出來,所以有勾選下方的 "檢閱與分割配置 (V)" 。


接下來將 / 、 /boot、/var、/usr、/home 幾個區塊分割出來。分割的原因和建議與 LVM 是什麼鬼東西可以參考鳥哥的 Linux 網站的教學。請不要來信問我,我什麼都不懂。(笑)


接下來,確定格式化並寫入硬碟。


然後選擇安裝模組,因為這台是要拿來當 ???? 的,為了將效能最大化,我們選擇 Minimum 的安裝。未來再用 yum 自行安裝需要的軟體。


最後,快樂的開機畫面出現了,可喜可樂可喜可樂。




開機後,第一件事當然是搞定網路,沒有網路就沒 yum 可以用了。將網路線插到後面四個網路孔中的第一個。首先用 


[root@ /] # dmesg | grep -in eth

找到網路卡相關資訊,如果是 R610,應該會看到我們用的網卡是 bnx2 。再來用


[root@ /] # modinfo bnx2 | more

來確定網卡的驅動版本。如果版本是 1.9.20 以前的,記的去更新,這是個 R610/R710 有名的 Bug,高速運轉時網卡會當掉,不過我的版本不用更新,還好。

在前面用 dmesg 指令時,我們可以看到主要網卡的 eth0 有另一個 em1 的名字,所以基本的 IP / Netmask / Gateway 的設定檔可以在 /etc/sysconfig/network-scripts/ifcfg-em1找到。在 Minimum 安裝時,可以用的文字編輯器好像只有 vi,所以就乖乖的用 vi 吧。


[root@ /] # vi  /etc/sysconfig/network-scripts/ifcfg-em1

我只是架家裏,前端還有一個 IP 分享器,所以用的是自動分配 IP 的 DHCP。因此設定很簡單,只要改:


NM_CONTROLLED="no" 
ONBOOT="yes" 
BOOTPROTO="dhcp"

這三個就好,如果是固定 IP 的請看其他教學網站或書籍囉。

最後... 重啟網卡,並用ping www.google.com 確定網路有通吧!


[root@ /] # /etc/init.d/network restart
[root@ /] # ping www.google.com

做完了,真累。最後要注意的是,把門關起來,冷氣打開,空氣清淨機也打開,別讓貓跑進去了唷。(大誤)

[教學] 初學者學程式?


這篇本來是我在某 BBS 回應別人的文章的,不過自己看了看,覺得這樣的學習流程還挺連貫 、而且也算有趣,所以就轉貼到自己的 Blog 了。

學寫程式真的不難,它不用花大錢買器材,網路上的免錢資訊也多到不行,更重要的是它入門門坎低,有心的話國中生也能寫一手好程式,不過有二點要先勞記在心裏:



  1. 寫程式是一種技術,所有的技術需要大量且 "重覆" 的練習。
  2. 別去補習班! :p
以下是我建議的學習過程

Phase 1: 學習基本的 C 語言 (150小時 ~ 200小時)


[注意] 不要去買路邊書店 (金石X或誠X) 裏的 C 語言入門書!

這種打基礎的東西一定要大量的練習,要練習到矇著眼也能寫,路邊那種快快樂樂學 C 語言的大眾讀物極度的缺乏練習題。而且一本看完寫完哪需要 150 小時? 頂多 10 小時就結束了 = =a

請去台北重慶南路原文書局或網路上買大學用的二手原文書,那種原文書裏每章後面都會有幾十個練習題,一個好的教科書每個練習題都會將之前的章節套進習題中,通通把它作完吧!

書中不會教你怎麼安裝或設定免費的 C 語言開發環境,所以請先花個五到十個小時 google "free C compiler" 並學習安裝,如果 google 了十個小時還裝不起來,那大概就表示該放棄了...

(可以找人教啦,但寫程式這種工作要不斷的學新東西,沒有足夠的 google 能力,會做到去賣雞排的 :p)


Phase 2: 在 "特定平台" 學習 Java (100小時)


"特定平台" 我建議的是 Android 手機,原因
  1. 在自己手機上寫東西比較有成就感
  2. Android 開發環境不用錢,而且在 Windows 上可以很簡單就搞定
有了第一階段的基礎,學寫 Java 不會是什麼難事,但跟第一階段不同,不只是要寫 "基本" 的語法,而是要真的開始寫些可以給其他人玩的程式了。
  • 花個二三小時,Google "Android Development" 或是 "Android Eclipse" 把軟體裝好吧
  • 路上書店買本 "快快樂樂學 Android" 與 "Java 我也會" 之類的大眾讀物。
  • 把 Android 的前二章看完,然後把 Java 範例在 Android 全寫一次 (20 - 30 hours)
  • 把 Android 書中的範例全寫一次 (20-30 hours)
  • 寫個不需要用到網路功能的小遊戲吧! (40-60 hours) [建議] 畫面醜一點也沒關係的單機開心農場 XD 因為會用到 Timer/Thread/GUI/各種判斷... etc.,算是第一個大 project。
  • 覺得寫的好的話... 開個 Google Play 帳戶上架,給人罵看看吧 :p

Phase 3: Linux & Server (100 hours)


到第二階段結束時,已經算是一般人說的 "會寫程式" 了,但這年頭什麼東西都要扯到網路,所以 server 也是必學的。
  • Google "CentOS",下載免費的 Linux 環境,拿一台不要用的爛電腦重灌成最基本的 text-mode Linux。(10 hours) 如果不想重灌且對自己的能力有信心,可以 google "VM" 
  • Google "gcc",學習如何在 Linux 上寫 C 程式 (10 hours) 當然沒那麼簡單啦,從 Linux 基本操作、更新、text editor 使用法都要學,所以 10 小時差不多
  • Google "socket server" 或 "linux C socket server" 從零開始用 Phase 1 的 C 寫一個簡單的 socket server 吧! (30 hours) 搞懂 "網路" 或 "socket" 是什麼大概就要花個四五個小時了 :p
  • 結合 Phase 2 & Phase 3,完成你第一個手機的線上遊戲吧! (50 hours) 不用太難,像是線上圈圈叉叉或是聊天室就好了

Phase 4: Linux Server - Apache+Tomcat & MySQL (100 hours)


一個真正的線上服務 (遊戲啦、網站啦、公司管理啦) 很難不和資料庫扯上關係,所以 Phase 4 除了學習別人寫好的 Server (Apache+Tomcat) 外,也要學習資料庫的存取。
  • 在 Linux 上安裝 Apache+Tomcat
  • Google "Servlet Tomcat" 並用 Java 重寫 (3-4) 的 Server (Web Service 架構)
  • Google "MySQL Java" 學習用 Java 與資料庫溝通,將所有連線過的使用者存起來。
  • 在 Phase 3 的手機軟體加入 "使用者註冊" 的功能,並上傳 server 存在資料庫中。
  • "稍微" 學一下 HTML,做一個網頁,讓自己能隨時隨地看到使用統計資料。

Phase 5-1: (Option): HTML / PHP / JavaScript...


這些都是做網站相關的技術了,要不要學要看有沒有興趣與用不用的到,不過有了 Phase 1 ~ Phase 4 的基礎,學這些也花不了什麼時間,我就不估了。 =..=


Phase 5-2 (Option): AI / OS / Network...


這些是專業的資工課程,不過在 Phase 1 ~ Phase 4 中,應該已經遇到一些相關的問題,且應該用 Google 找過答案了,想精進再買書來讀吧!

就這樣,打完收工! 全部大概是 600 小時,一天十小時只要二個月就學成了。除了要買幾本書外和一台自己的電腦與手機外,不用花大錢,通通是 Google 就有的東西,整套學完還加上幾個作品,說找不到好工作我很難相信,不說別的,PTT 或外包網滿地都是可以接的 case 了。