作者sitos (麦子)
看板Ladies_Digi
标题Re: [举手] 可以问在Linux上使用C的问题吗?
时间Mon Jun 1 16:28:36 2009
※ 引述《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
1F:→ beagle:真没想到会在这边遇到你... 06/01 17:03
2F:→ sitos:阿... 你是谁阿? :) 06/01 18:28
3F:→ beagle:这个问题嘛... 我也常常问我自己... 06/02 10:52
4F:→ beagle:我们没见过面, 交集的话应该是某P老师的个人板... 06/02 10:53
5F:→ sitos:喔.... :) 06/02 12:03