[解決済み] clang: error: linker command failed with exit code 1が表示されるのはなぜですか?
質問
Xcodeを使ってK&Rを少しずつ進めている初心者です。Functionsセクションで、彼らの例であるpower関数のコードを以下のように入力しました。
#include <stdio.h>
int power(int m, int n);
int main()
{
int i;
for (i=0; 1<10; ++i)
printf("%d %d %d\n", i, power(2,i), power(-3,i));
return 0;
}
実行しようとすると、次のようなエラーが表示されます。
Undefined symbols for architecture x86_64:
"_power", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
この質問に対する回答をたくさん読みましたが、このような小さなプログラムでは、私の状況にどのように適用されるのかがわかりません。
ご教示いただければ幸いです。
解決方法は?
なぜ clang: error: linker command failed with exit code 1 が表示されるのですか?
関数を宣言しただけです。コードには何も定義されていません。リンク時にコンパイラ(ここではclang)は {コード という関数が定義されているので、このような場合、リンカーはエラーを投げます。もし
プレpower
の宣言をリンクすることができます。
int power(int x, int y)
{
\*do calculation*/
}
を定義しておけば、エラーになることはありません。
整数の場合は、関数を作ってみました。
プレpower
でコンパイルします。
#include <stdio.h>
int power(int base, int exp);
int main()
{
int i;
for (i=0; i<10; ++i)
printf("%d %d %d\n", i, power(2,i), power(-3,i));
return 0;
}
int power(int base, int exp)
{
int result = 1;
while (exp)
{
if (exp & 1)
result *= base;
exp >>= 1;
base *= base;
}
return result;
}
関数を理解していただけたでしょうか?頑張ってください :-)
関連
-
[解決済み】単項演算子「*」の型が無効(「int」がある)C言語でのエラー
-
[解決済み】ポインタへの代入時に互換性のないポインタ型からの初期化警告が発生した
-
[解決済み】GCC Cコードで静的宣言が非静的宣言に続くことを解決するには?
-
[解決済み] struct で "warning: useless storage class specifier in empty declaration" (警告: 空の宣言での無駄なストレージクラス指定子)
-
[解決済み] [Solved] なぜこのようなエラーが発生するのでしょうか。「データ定義に型またはストレージクラスがない」?
-
[解決済み】C 未知の型名「my_structure」。
-
[解決済み】警告:引数「互換性のないポインタ型から」を渡す[デフォルトで有効]。
-
[解決済み] [Solved] .Cファイルをコンパイルしています。アーキテクチャ x86_64 の未定義シンボル
-
[解決済み】未定義参照 makefile が間違っているのかも?
-
[解決済み】makefile:4。*** missing separator. 停止する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Cコンパイルエラー。"変数サイズのオブジェクトが初期化されていない可能性がある"
-
[解決済み] strtokのセグメンテーションフォールト
-
[解決済み] struct has no member named
-
[解決済み】EAGAINとはどういう意味ですか?
-
[解決済み】警告:組み込み関数'printf'の非互換な暗黙の宣言(デフォルトで有効]
-
[解決済み】C言語でint64_t型を表示する方法
-
[解決済み】エラー:不明な型名'bool'
-
[解決済み】未定義参照 makefile が間違っているのかも?
-
[解決済み] エラー: `itoa` はこのスコープで宣言されていません。
-
[解決済み】makefile:4。*** missing separator. 停止する