2016-08-13 20 views
0

私はhttp://gnuu.org/2009/09/18/writing-your-own-toy-compilerチュートリアルに従おうとしています。次のエラーが表示されます。ld:アーキテクチャx86_64エラーのシンボルが見つかりません

私には何が欠けていますか?

Invoking: GCC C++ Compiler 
g++ -std=c++0x -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -I/usr/local/opt/llvm/include -O0 -g3 -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor -std=c++11 -fPIC -MMD -MP -MF"src/main.d" -MT"src/main.o" -o "src/main.o" "../src/main.cpp" 
In file included from ../src/main.cpp:2: 
../src/node.h:17:61: warning: control reaches end of non-void function [-Wreturn-type] 
    virtual llvm::Value* codeGen(CodeGenContext& context) { } 
                  ^
../src/node.h:63:19: warning: field 'rhs' will be initialized after field 'op' [-Wreorder] 
     lhs(lhs), rhs(rhs), op(op) { } 
       ^
2 warnings generated. 
Undefined symbols for architecture x86_64: 
    "yyparse()", referenced from: 
     _main in main-974049.o 
    "_programBlock", referenced from: 
     _main in main-974049.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: *** [src/main.o] Error 1 
+0

コードを投稿してください。 – SurvivalMachine

+0

「私は何が欠けていますか?」 'return'ステートメントのように見えます。 – user4581301

+0

メンバーのイニシャライザリストの順序に関係なく、宣言されている順番でメンバーが初期化されます。これは問題になるかもしれませんが、 'memberB(42)、memberA(memberB.stuff)'と 'memberA'がクラス内で宣言されている場合、' memberA'は初期化されていない 'MemberB'で初期化されます。悪い質。 – user4581301

答えて

3

いくつか不足しています。

  1. コンパイラの最初の警告メッセージがコードに明白なバグを通知しているという事実はありません。それを修正する必要があります。

  2. コンパイラの2番目の警告メッセージは、コードの別のバグを知らせるメッセージです。

  3. 最後に、-cオプションがg++に欠けているため、オブジェクトモジュールを生成する代わりに、不完全なプログラムをリンクしようとするコンパイラが発生します。

+0

'-c'フラグが多くの問題を修正しました。問題は空の '{}'ブロックのようです。私はそれらを固定しています。 – turhanco

関連する問題