These are chat archives for Constellation/iv

11th
Apr 2014
iseki
@iseki-masaya
Apr 11 2014 05:23

main.ccで以下のコードをbuildできますか?

  llvm::Module* module = new llvm::Module("llvm", llvm::getGlobalContext());
  llvm::ExecutionEngine *EE = llvm::EngineBuilder(module).create();

上のコードをbuildすると以下のエラーが出ます。

Undefined symbols for architecture x86_64:
  "_LLVMLinkInJIT", referenced from:
      __GLOBAL__I_a in main.cc.o
  "llvm::EngineBuilder::selectTarget()", referenced from:
      _main in main.cc.o
  "llvm::EngineBuilder::create(llvm::TargetMachine*)", referenced from:
      _main in main.cc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

VERBOSEを見る限りだと、関連しそうなライブラリであるlibLLVMExecutionEngine.aが読み込まれていませんでした。しかし、llvmのlibにはlibLLVMExecutionEngine.aがあります。
また、diagramのcompiler.ccに上のコードを記述した場合はbuildできます。

Yusuke Suzuki
@Constellation
Apr 11 2014 09:55
確認します
LLVM の version はいくつですか? 関係ないかもですが.
iseki
@iseki-masaya
Apr 11 2014 10:01
ちょうど今、原因を見つけました。
Yusuke Suzuki
@Constellation
Apr 11 2014 10:01
まじですか!
iseki
@iseki-masaya
Apr 11 2014 10:02
VERBOSEを見てみたら、LLVMのLibraryの一部が入っていませんでした。
FindLLVM.cmakeの${LLVM_FIND_COMPONENTS}を消したら、全部入るようになりました。
${LLVM_FIND_COMPONENTS}が原因なのは分かったのですが、これは何のためについているんですか?
messageで表示させみてもall-targetsbitwriterlinkeripoinstrumentationsupporttablegenasmparserとなっていたのですが...
Yusuke Suzuki
@Constellation
Apr 11 2014 10:14
llvm-config --components で出るあれです
llvm-config --ldflags alpha => -L/usr/lib/llvm-3.0/lib -lpthread -lffi -ldl -lm
のやつです.
Linux でも大丈夫か確認します
ldc が LLVM を探すために使っていたものを iv 向けに変更したものです
https://github.com/ldc-developers/ldc
license: https://github.com/Constellation/iv/blob/llvm/LICENSE.ldc
うっ, link error...
Yusuke Suzuki
@Constellation
Apr 11 2014 10:21
LLVMJIT が出てないかもです, 調査します.
Yusuke Suzuki
@Constellation
Apr 11 2014 10:29
あー, LLVM_FIND_COMPONENTS は必要です.
直します
Yusuke Suzuki
@Constellation
Apr 11 2014 10:34
あーいや, だめですね
iseki
@iseki-masaya
Apr 11 2014 10:35
どうだめなんですか...
Yusuke Suzuki
@Constellation
Apr 11 2014 10:36
手元でも build error が出ていて (LLVM_FIND_COMPONENTS をのぞいても, のぞかなくても), ちょっとそれを見ていますですー.
iseki
@iseki-masaya
Apr 11 2014 10:37
了解です。
Yusuke Suzuki
@Constellation
Apr 11 2014 10:45
直しました! これでどうですか?
iseki
@iseki-masaya
Apr 11 2014 10:47
今buildしてみます。
iseki
@iseki-masaya
Apr 11 2014 10:54
無事、buildできました!ありがとうございます。
Yusuke Suzuki
@Constellation
Apr 11 2014 11:23
LLLVM JIT から LLVM MCJIT に切り替えました