Re: [舉手] 可以問在Linux上使用C的問題嗎?

看板Ladies_Digi作者 (麥子)時間16年前 (2009/06/01 16:28), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《beagle (紅茶犬)》之銘言: : ※ 引述《ninaro (ninaroN￾ NN￾ )》之銘言: : : PS:本身是C新手(跑過一點點程式) : 以前用哪一種 compiler ? : Linux 的 compiler 一律是 gcc 系列, 但開發環境 (IDE) 有很多種, : 我自己是完全不用 IDE, 只用文字編輯器寫 source code, : 然後直接用 gcc+make compile 成執行檔... Linux 下面的 compiler 可不是只有 gcc 喔,它只是最容易取得的一種而已。 比如你如果用 intel 的 processor ,也可以用 Linux 版本的 icc 。 在 compile 的時候會對 processor 的設定作一些最佳化,可能會跑得比較快。 不過我印象中只有試用版是免費的,正式版收費並不便宜。 : : Linux的超新手(只看過入門書還沒在平台上使用過) : : 過一陣子入學會接觸,故自己先唸而產生下面問題, : : 希望前輩們能幫助後學解惑,感謝^^ : : 我的問題如下: : : Unix是由C寫成,而Linux是Unix-like,C雖可不受硬體限制,但是否會受OS限制呢? : 最早的 Unix 是大部份 C 小部份組合語言寫成的, 但 Unix 家族眾多, 血統複雜... : Linux 這非純正血統的突變種也是大部份 C 小部份組合語言寫成的... : 但不同 Unix 之間有不少相異之處, 並非只要是用 C 寫出來的就一模一樣... : C 有與 OS 無關的標準 library, 也有 OS 相關的 library, : stdio, stdlib 這些都是與 OS 無關可以直接移植的... : conio, "windows.h", Direct X 這些就是 OS 相關的部份... : 初學者最常遇到麻煩的是 pause(), 這是 DOS 才有的 function ... 應該要反過來說,每一個 compiler 支援哪些指令,不支援哪些指令, 是看 compiler 的實作方式。一般 C compile 大概至少支援 ANSI C 的標準。 (不過實際上大部份的都沒有百分之百完整正確地支援) library 的話其實也不完全是跟 OS 綁定的,只要有裝該 library , compiler 在編的時候能認得,就會編得過去。 不過 windows 和 Linux 常用的函式庫命名常不相同,所以無法共用一個程式。 如果要用 C 寫跨平台程式,那麼使用某些非標準的函式庫時, 就可能需要自己寫一些 wrapper 把底層不同的實作函式庫包成一樣的樣子, 再讓 compiler 透過一些參數來辨認平台作編譯的動作。 不過這不是一個 C 的新手應該要去碰的東西,牽扯太廣了。 : : 如在Linux下跑C需要修改什麼? : 如上所述, 看情形, 也可能不需修改就能用。 : 使用越多 Windows 函式庫, 移植難度就越高。 : 牽涉到視窗 UI 介面的部份是完全不同, 幾乎需要整個重寫, : 不過初學者應該還沒學到才對... : 純文字介面就不用太擔心了... 如果看得懂 warning 跟 error ,就先拿去編,再看缺什麼就改什麼, 盡量用有支援的函式去取代沒支援的。反正不對 compiler 都會講, 自己看 code 很多時候也看不出來。 : : 需要下載不同的compiler嗎? : : 麻煩各位了,感謝^^ : Linux 安裝光碟通常會內附完整 gcc (GNU Compiler Collection), : 安裝時有選就會裝上去, 但不同 distribution 選擇元件的方式不一樣... : 因為你說你學的是 C, 我這篇裡面講的都是 C 語言的相關名詞, : 如果你學的其實是 C++, 其實跨平台移植的道理也是相通。 如果不太在意效能,又想要跨平台,就用 java 吧,事情一下子就變單純了。 如果會 C/C++ 寫得熟,轉 java 應該勉勉強強不會花太多時間。 -- 我實實在在的告訴你們,一粒麥子不落在地裡死了, 仍舊是一粒,若是死了,就結出許多子粒來。 約翰福音 12:24 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.31.132

06/01 17:03, , 1F
真沒想到會在這邊遇到你...
06/01 17:03, 1F

06/01 18:28, , 2F
阿... 你是誰阿? :)
06/01 18:28, 2F

06/02 10:52, , 3F
這個問題嘛... 我也常常問我自己...
06/02 10:52, 3F

06/02 10:53, , 4F
我們沒見過面, 交集的話應該是某P老師的個人板...
06/02 10:53, 4F

06/02 12:03, , 5F
喔.... :)
06/02 12:03, 5F
文章代碼(AID): #1A8v4sTq (Ladies_Digi)
文章代碼(AID): #1A8v4sTq (Ladies_Digi)