A. linux下的c語言編程和windows下的c語言編程有什麼區別
函數庫的區別linux下的C函數庫和windows下的函數庫系統調用的機制不一樣
Glibc包含了主要的C庫。這個庫提供了基本常式,用於分配內存、搜索目錄、打開關閉文件、讀寫文件、字串處理、模式匹配、數學計算等等。所說的機制不一樣不單是指中斷號的問題,中斷號也是通過input參數和output把函數地址和輸出地址定位在寄存器的,那些函數在windows和linux下的實現應該是不一樣的,就拿文件系統來說,ext3和fat32的怎麼可能一樣.還有mm內存管理,都是不一樣的.中斷還是屬於硬體層的,X86上的應該都差不多,但操作系統層的實現就大不相同了.
其他區別:
1。系統平台不一樣
底層開發就涉及到了系統內核的問題,對於linux來說,你可以知道它裡面是什麼結構,而windows。。。
2。編譯器環境不一樣
linux採用gcc編譯器,gdb調試工具,和多種可視化的編輯器如 emacs,kedit等等,也有文本的vi/vim,GDB的功能是非常強大的,個人認為較win下的好
盡管win下地mingw,devcpp集成了gcc,但是搞的總讓人不爽~,gcc對標準的支持是相當的好
3。針對人群不一樣
win下主要還是面向商業化的開發,而絕大多數的編程愛好者則喜歡屬於自己開闊自由的系統下編程,不願意禁錮在windows下(MS)的包圍中
4。發展方向不一樣。
OpenSource的思想已經在linux這片凈土開花,參見GPL....。找資料方便,源代碼公開,可以體驗開發的樂趣
win下,ms逐步把一批開發人員束縛在它自己的系統裡面,開發環境越來越傻瓜,這能不能叫人性化呢?搞到最後。。。可能越走越遠~
5。版權問題
win下的好多好多東西都涉及到版權問題,linux的free軟體雖然是開放軟體,不過好多好多都是免費用於商業化的。。。當然有的需要開發源代碼,好多也不需要~
C++的區別也差不多
B. gcc編譯的軟體是否可以商業化
首先,GPL並不禁止商業化。GPL只是規定你在很多情況下要開放源代碼。
GPL中,軟體所「生產」出的東西是可以不用開放源代碼的。也就是說GCC編譯出的東西可以商業化。但是要注意的是,GCC編譯可能會用到的一些庫是GPL的,你編譯的時候鏈接了這些庫的話,就構成了「在其基礎上建立」。也就是說使用了這些庫的東西需要開放源代碼。
好在,我記得現在Linux下的C運行時庫是LGPL的。
C. c++各種編譯器有什麼不同,應該不存在哪種編譯器最好的說法吧是不是只要學會用一種編譯器就可以了
gcc過去是指gnu組織的c語言編譯器,
現在gcc包括gcc命令在內都是gnu的各種語言的編譯器集。
在類linux環境輸入gcc可以指定編譯各種語言。c/c++,objc,ada,pascal,d,fortran等等
g++是專指gnu c++的編譯器,屬於gcc的一個編譯器。
而且要指出g++, dev c++, codeblocks, mingw,等等其實都是在用gcc編譯器中c/c++的部分。
各適合做什麼?
vc++在win下優勢最強,在x86指令下性能優化、標准支持是最好的之一,性能僅次於intel cc,但綜合性能最強。
borland c++,現在已經被c++ builder 2012取代了。這個版本的優勢也是同vc++類似,在win加x86的cpu下。特別之處是豐富的組件和快捷向導方案,自動生成代碼很多。做常用的網路、資料庫,桌面應用,很多時候都不用敲什麼代碼,直接滑鼠一陣拖拉就出來了,適合做又快又臟的應用。性能優化不如vc++
gcc是開源軟體的核心組件,linux/unix,全靠它編譯,支持幾乎世上所有的32位以上晶元,什麼手機、龍芯、pc,power pc, arms,大設備小設備都靠它。最樸素,但性能強大。適用於任何需要計算的場合。經過多個巨頭砸巨資優化過的編譯器,性能是一流的。移植性一流。標准化程度也是一流。就是開發工具—打字碼字的工具IDE,沒有像前2個那樣商業化,。