2013-06-10 13 views
6

はい、これまでに質問されていますが、SOと他の場所で出てくるすべての回答は、g ++の代わりにgccのC++コードをコンパイルするか、標準ライブラリを使っています。今のところ、私のために実際にここに並んでいるものは何もありません。gcc 4.2.1リンクの問題:アーキテクチャの未定義のシンボルx86_64

私はC言語の基本クラッシュコースを使い、標準ライブラリではなく、作成したファイルへのリンクを示す例をコンパイルしようとしています。ここでは、コードです:

math_functions.h

int sum  (int x, int y); 
float average (float x, float y, float z); 

math_functions.c

int sum (int x, int y) 
{ 
    return (x + y); 
} 

float average (float x, float y, float z) 
{ 
    return (x + y + z)/3; 
} 

し、最終的に

test3.c

#include <stdio.h> 
#include "math_functions.h" 

main() 
{ 
    int theSum  = sum (8, 12); 
    float theAverage = average (16.9, 7.86, 3.4); 

    printf ("the sum is: %i ", theSum); 
    printf ("and the average is: %f \n", theAverage); 
    printf ("average casted to an int is: %i \n", (int)theAverage); 
} 

これらはすべて同じフォルダにあります。私は、フォルダへのターミナル、CDを開いて実行すると:

gcc test3.c -o test3 

を私が取得:私はこれ以来、私がしなければならないべきでない(GCCまたはg ++を使用した場合

Undefined symbols for architecture x86_64: 
    "_average", referenced from: 
    _main in ccmf69Tt.o 
    "_sum", referenced from: 
    _main in ccxms0fF.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

はこれが起こりますすべてがCでなければなりません)。これまでにコンパイルしたものはすべて、上に表示されます。

#include <stdio.h> 

私はそれがmain()の前math_functions.hの内容を入れて、コンパイルしてtest3.cファイルから

#include "math_functions.h" 

を除去することにより、正常に動作するために取得し、の内容をすることができますmain()の後のmath_functions.c。そして、はい、それはコピーと貼り付けなので、間違いなく同じコードです。

私のコードを動作させることはできますが、それをコピーして貼り付けることなく他のCファイルでそのコードを使用することができなくなってしまいます。 1つのファイル...

私はこれを修正できる方法があるので、標準のC、C++、Objective-Cライブラリだけを追加することができますか?

これは、ターミナルのボックスから手動でgccコマンドを入力し、CodeRunnerを介して行われます。標準コマンドはすべてボタンに押し込まれています。

Xcode 4.6.2のコマンドラインツールを使用して、2012年版Mac miniでMountain Lion 10.8.4(12E55)を実行しています(ほんの数時間前にインストールしましたが、今までのMiniの使用)

MacBook Airには同じソフトウェアがインストールされていますが、テストはまだ行われていません。

任意のポインタ?もし誰かがこれを持っていて、どこかでここでそれを試してみたら、私はそれを指摘してください、私は1時間は探していましたが、私が前に言ったように、 C + +のコードまたは何か変わった標準ライブラリです。

答えて

5

maths_functionをコンパイルするだけで済みます。リンカーは、それがそのモジュールに含まれている定義を持っていないと不平を言っています。著書にあると便利だっただろう...見据えものの、将来の例は、その構文を持っているように見えます

gcc test3.c math_functions.c -o test3 
+0

ああ、。作者のサイトには訂正のセクションがありますので、そこにあるかどうかチェックし、そうでない場合は電子メールでお送りします。ありがとうございます! – FreelancerJ

関連する問題