2012-02-22 14 views
-1

sqrt(),floor()pow()という簡単な機能を作りたいと思います。だから、私は<math.h>を含めた。私の機能を使用しようとすると、私のプログラムは、sqrt()floor()は存在しないと言います。私は3倍のファイルをチェックして書き直しましたが、それでも同じエラーが出ます。 <math.h>ディレクトリに何か問題があるかどうかを調べるために、私は同じことを計算した別のファイルを作っていました。私は今は無知です。私は間違って何をしていますか?ファイルをCに含める

非機能プログラムのコード:

#include <math.h> 
#include "sumofsquares.h" 

int sumofsquares(int x){ 
    int counter = 0; 
    int temp = x; 

    while(temp != 0){ 
     temp = temp - (int)pow(floor(sqrt(temp)), 2); 
     counter ++; 
    } 
    return counter; 
} 

作業テストファイル:

エラーこの

が/tmp/ccm0CMTL.oある:関数でsumofsquares ': /home/cs136/cs136Assignments/a04/sumofsquares.c:9:未定義参照 からsqrt' /home/cs136/cs136Assignments/a04/sumofsquares.c:9:床」collect2は未定義 参照:ldが1つの出口が

をstatus`返さ私は

+5

正確なエラーとは何ですか?どのようにプログラムをコンパイルしていますか? – cnicutar

+0

@cnicutar:このエラーは/tmp/ccm0CMTL.oです。関数 'sumofsquares ': /home/cs136/cs136Assignments/a04/sumofsquares.c:9:' sqrt'への未定義の参照 /home/cs136/cs136Assignments/a04/sumofsquares.c:9:未定義の「floor」への参照 collect2:ldが1終了ステータスを返しました。 仮想Ubuntu OSでrunCを使用しています。 – user1222282

+0

これは*リンケージ*の問題で、*インクルード*の問題ではありません。答えはcnicutarで確認してください。 – karlphillip

答えて

8

をコンパイルするために、仮想UbuntuのOS上でrunCを使用しています数学ライブラリをリンクするには、おそらくの引数がgccには足りません。試してみてください:

gcc ... <stuff> ... -lm 

、少なくとも2つのCのFAQで問題に関連があります。

+0

私は実際にRunCを使用しているので、私には当てはまりません。 :( – user1222282

+1

"RunCは、Unix上でC++をスクリプト言語として使用するのに役立つシンプルな(やや粗末な)システムです。"ここでは、Crudenessの証拠があります。RunCを正しくリンクする方法を理解する必要がありますあなたのスクリプト。 –

関連する問題