最近在學linux,決心用這個系統進行開發工作,所以,無論是進行開發工作,還是在oj上刷題,學會linux下的c和c++程式設計都是很有必要的。
1,先有linux環境
搭mingw和cygwin都有點麻煩,最最簡單的辦法還是裝個真正的linux,用虛擬機器也好,在網路上的另一台機器也好。這樣不僅快,而且你有了真正的環境。
2.會c/c++語言 ;
3.入門階段熟悉gcc命令列,最基本的引數,如,-g,-w,-o,-o,-c 建議看man gcc,了解其中每個命令的意思,以便熟練使用。
4.提高端段,你需要開始了解,並熟悉ld,gdb,編寫基本的makefile,了解make程式,程式設計方面學習*nix系統ipc,訊號行為
;5.高階階段:程式設計方面學習linux核心原始碼結構,驅動開發,進而能精簡核心,了解各種library的作用和用法。編譯器方面:了解系統各個主要庫如 libstdc++,glibc2(libc.so),ld-linux.so.2(動態鏈結器),了解gcc其它各種option.ld各種, option.編寫複雜的makefile,熟悉並能使用automake和autoconf.
另外,分享一下gnu的c和c++編譯器的區別和聯絡。
gcc and g++分別是gnu的c & c++編譯器 gcc/g++在執行編譯工作的時候,總共需要4步
1.預處理,生成.i的檔案[預處理器cpp]
2.將預處理後的檔案不轉換成組合語言,生成檔案.s[編譯器egcs]
3.有彙編變為目標**(機器**)生成.o的檔案[彙編器as]
4.連線目標**,生成可執行程式[鏈結器ld]
1 :兩者都可以編譯c和c++**,但是請注意:
(1).字尾為.c的,gcc把它當作是c程式,而g++當作是c++程式;字尾為.cpp的,兩者都會認為是c++程式,注意,雖然c++是c的超集,但是兩者對語法的要求是有區別的。c++的語法規則更加嚴謹一些。
(2).編譯階段,g++會呼叫gcc,對於c++**,兩者是等價的,但是因為gcc命令不能自動和c++程式使用的庫聯接,所以通常用g++來完成鏈結,為了統一起見,乾脆編譯/鏈結統統用g++了,這就給人一種錯覺,好像cpp程式只能用g++似的。
2 :對於__cplusplus巨集,實際上,這個巨集只是標誌著編譯器將會把**按c還是c++語法來解釋,如上所述,如果字尾為.c,並且採用gcc編譯器,則該巨集就是未定義的,否則,就是已定義。
3 :編譯可以用gcc/g++,而鏈結可以用g++或者gcc -lstdc++。因為gcc命令不能自動和c++程式使用的庫聯接,所以通常使用g++來完成聯接。但在編譯階段,g++會自動呼叫gcc,二者等價。
linux下c 程式設計
yum install gcc c 安裝c 環境 然後開始編寫c 程式,假設放到test1.cpp中,g o test11 test1.cpp就會編譯test1.cpp生成test11檔案。test11就可以執行該程式 查詢乙個包是否被安裝 rpm q rpm package name 列出所有被安...
Linux 下C程式設計
第乙個hello word程式 1,在桌面上新建乙個main.c檔案,檔案編輯器開啟並敲上c語言 2,在終端中輸入 cd desktop gcc main.c a.out 生成的a.out是可執行檔案 gcc main.c o main 指定編譯好的檔案的名 gcc wall main.c 意思就是...
Linux 下C程式設計
第乙個hello word程式 1,在桌面上新建乙個main.c檔案,檔案編輯器開啟並敲上c語言 2,在終端中輸入 cd desktop gcc main.c a.out 生成的a.out是可執行檔案 gcc main.c o main 指定編譯好的檔案的名 gcc wall main.c 意思就是...