『gcc 5分シリーズ』第4節:-cオプション(マルチファイルプログラミング)


「gcc 5分シリーズ」第4節:-cオプション(マルチファイルプログラミング)IDE党がC/C++プロジェクトを書くと、必ず1つのプロジェクトに複数のファイルがあると信じています.では、gccは複数のファイルを処理できるかどうか.答えはできますが、いくつか注意すべき点があります.2つのファイル、sum.cppファイルはsum関数を定義しています.コードは以下の通りです.

  
  
  
  
  1. int sum(int a,int b) 
  2.     return a+b; 

    main.cppはsum関数を呼び出し、結果を出力します.コードは次のとおりです.

  
  
  
  
  1. #include <iostream> 
  2. using namespace std; 
  3. int sum(int a,int b); 
  4. int main(){ 
  5.     cout<<sum(4,7)<<endl; 
  6.     return 0; 

どうやってコンパイルしますか?エラーメソッド:

  
  
  
  
  1. g++ -o main main.cpp 

このようにコンパイルすると、エラーが発生します.

  
  
  
  
  1. /tmp/xxxx.o: In function `main': 
  2. main.cpp:(.text+0xf): undefined reference to `sum(intint)' 
  3. collect2: ld returned 1 exit status 

明らかに、3行目から(ld)が見えます.リンク時のエラーです.このエラーの原因も簡単です.main.cppにはsum関数の定義がないので、リンク(ld)は恨みを晴らし、sum関数の定義が見つかりません.C/C++はターゲットファイルに依存していることを知っておくべきです(拡張子.oというファイル)マルチファイルプログラミングを実現します.まず、コンパイラはソースファイルをターゲットファイルにコンパイルします.次に、リンクは複数のターゲットファイルを実行可能ファイルにリンクします.では、gccではどうすればいいですか.次の3行のコマンドが必要です.

  
  
  
  
  1. g++    -c -o main.o main.cpp 
  2. g++    -c -o sum.o sum.cpp 
  3. g++ -o main main.o sum.o 

ここで,-cは「コンパイルのみでリンクしない」という意味である.
その後、運転できます.コマンド:

  
  
  
  
  1. ./main 

出力:

  
  
  
  
  1. 11 

本節が終わる.