1. 程式人生 > >linux環境下c++的編寫、除錯以及makefile多檔案連編需要注意的問題

linux環境下c++的編寫、除錯以及makefile多檔案連編需要注意的問題

最近剛開始接觸Linux C++,發現其與windows C++有太大的差別。這裡是自己的一些總結,如果有新人看到,希望能夠幫到您。

1、gcc編譯器簡介

生成一個.out需要將原始檔依次進行預處理、編譯、彙編、連結,並最終生成可執行檔案。下面將對各步進行具體的說明:

預處理(Pre-Processing):根據預處理命令(#開頭)修改原始檔# gcc -o hello.i -E hello.c

編譯(Compiling):語法檢查,並將原始檔翻譯成彙編檔案# gcc -o hello.s -S hello.i

彙編(Assembling):將彙編檔案轉換為目標檔案(二進位制)# gcc -o hello.o -c hello.s

連結(Linking):編址和符號連結,生成可執行檔案# gcc -o hello hello.o

注意:1)這裡的語法均只列舉最常規的形式;2)在進行gcc命令時,如果您使用的是C++的庫建議使用g++命令;3)“-o“只是指明原始檔經過操作後生成的目標檔名以及其檔案格式,並不屬於編譯操作可以將其放到命令的末尾,在讀命令先讀gcc或者g++,然後跳過-o以及後面的目標檔案接著讀後面的指令,最後再讀-o及其後面的目標檔案這樣就會容易理解。

2、makefile

關於makefile這裡只對其檔案格式和容易理解錯的地方進行說明:

檔案格式示例為{

edit: main.o A.o
[Tab]g++ -o edit main.o A.o
main.o: A.h
[Tab]

gcc -c main.cpp
A.o: A.h
[Tab]gcc -c A.cpp
clear:
[Tab]rm edit main.o A.o}

注意:1)edit是指最終的目標檔名;2)命令列的開頭一定要用[Tab]進行開頭;3)依賴檔案只寫windows下每個原始檔#include中的檔案即可,不必包含原始檔即.cpp檔案;4)編譯器(例如:g++ or gcc or cc)的選擇一定要正確,其中g++支援c和c++,而gcc、cc僅支援c。