0

私は C 言語に不慣れで、C コードをコマンドでコンパイルするたびにこのエラーが発生し続けますcc prompt.c。次のエラーが表示されます。

アーキテクチャ x86_64 の未定義のシンボル:

「_add_history」、以下から参照:

  _main in prompt-66f61f.o

「_readline」、以下から参照:

  _main in prompt-66f61f.o

ld: アーキテクチャ x86_64 のシンボルが見つかりません

clang: エラー: リンカー コマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用してください)

これが私のコードです:

#include <stdio.h>
#include <stdlib.h>

#include <editline/readline.h>


int main(int argc, char** argv) {

  /* Print Version and Exit Information */
  puts("Lispy Version 0.0.0.0.1");
  puts("Press Ctrl+c to Exit\n");

  /* In a never ending loop */
  while (1) {

    /* Output our prompt and get input */
    char* input = readline("lispy> ");

    /* Add input to history */
    add_history(input);

    /* Echo input back to user */    
    printf("No you're a %s\n", input);

    /* Free retrieved input */
    free(input);

  }

  return 0;
}

OSX 10.10.3 を実行している Macbook Air でこのプログラムを書いています。

私は C 言語を学び始めたばかりなので、この質問が本当に単純かどうか判断しないでください。検索しても結果がありませんでした。

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

1

リンカーが関数と関数editlineの定義を見つけるために、プログラムをライブラリとリンクする必要があります。readlineadd_history

-lこれを行うには、コンパイル コマンドでフラグを使用してライブラリを指定します。

cc prompt.c -ledit
于 2015-06-09T02:45:52.173 に答える