1. ホーム
  2. c

[解決済み] Cプログラムのコンパイルで、アーキテクチャx86_64の未定義シンボルが発生する [重複] 。

2022-01-30 23:45:13

質問

という簡単なプログラムを持っています。 demo_use.c

#include "libhello.h"

int main(void) {
 hello();
 return 0;
}

libhello.h

void hello(void);

libhello.c

#include <stdio.h>

void hello(void) {
  printf("Hello, library world.\n");
}

ターミナルで次のようにコマンドを使用しました。

gcc demo_use.c -o test

エラー アーキテクチャ x86_64 に対して未定義のシンボル: "_hello",

参照元: ccZdSQP3.o の _main

ld: アーキテクチャ x86_64 用のシンボルが見つかりません collect2: ld は 1 の終了ステータスを返しました。

解決方法は?

バイナリを生成するには、両方のソースファイルを一緒にコンパイルする必要があります。

gcc demo_use.c libhello.c -o test

それ以外の場合、定義された hello() 関数が存在しないことになります。そのため、リンク時にリンカは undefined symbol というエラーが発生します。