にコンパイルします。C - 建築x86_64のための未定義のシンボル私は、Mac OSXライオンに非常に非常に単純なname.cファイルをコンパイルする上でいくつかの問題を取得していますマックOSXライオン
今、私はcs50.netでハーバードCS50コースを開始しました。私は全く新しいプログラミングではありませんが、私はこのコースがどのように教えられているのか不思議でした。
これはname.cの源である:あなたが見ることができるように
#include <stdio.h>
#include <cs50.h>
int
main(void)
{
printf("State your name:\n");
string name = GetString();
printf("O hai, %s!\n", name);
return 0;
}
、それはこのライブラリを必要とします:https://manual.cs50.net/CS50_Library。
さて、私はそれをコンパイルするとき、この問題が発生した:
Undefined symbols for architecture x86_64:
"_GetString", referenced from:
_main in name-vAxcar.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [name] Error 1
私は私のソースファイル内の同じのGetString()cs50.c機能を使用する場合、それは完璧に動作します:
#include <stdio.h>
#include <string.h>
#include <float.h>
#include <limits.h>
#include <stdbool.h>
#include <stdlib.h>
typedef char *string;
string GetString(void);
int
main(void)
{
printf("State your name:\n");
string name = GetString();
printf("O hai, %s!\n", name);
}
string
GetString(void)
{
// CODE
}
なぜこれは起こるのだろうか? 上記のリンクにあるようにライブラリをインストールしました。私はcs50.hとlibcs50.aの両方がそれぞれ/ usr/local/includeと/ usr/local/libにあることを確認しました。
ご協力いただきありがとうございます。
コンパイラに '-lcs50'を渡していますか? – apmasell
また、適切な '-L'は '-lcs50'をどこで検索するのかコンパイラに伝えますか? –
twalberg