LLVM-IR を吐くところまでは動いたのでそのメモ。
作成した repository は github の atton-/kaleidoscope にあります。
ページに書かれているコードを写経していたら chapter 3 くらいから問題発生。
Webに書かれていることを写経してもコンパイルが通らない。
本家のコードを chapter 2 で定義した Syntax と chapter 3 で定義された Syntax は違うようです。
他にもWebには書かれていない関数があったりしたので、エラーが出たら本家のコードを見つつ chapter 3 の Code Generation までは書けました。
ここで追加で問題発生。 llvm-general を ghci から使おうとすると
<interactive>: /usr/lib/llvm-3.5/lib/libLLVMSupport.a: unhandled ELF relocation(RelA) type 42
と出て動かない。
OSX 10.10.5 / Ubuntu 16.04 / Fedora 23 / Fedora24 on Docker で動かしたり stack を使ったりしたが解決せず。
ちなみに OSX では
lookupSymbol failed in relocateSection (RELOC_GOT)
/usr/local/Cellar/llvm35/3.5.1/lib/llvm-3.5/lib/libLLVMProfileData.a: unknown symbol `___dso_handle'
と出て動かなかったです。
--ghc-options="-opta-Wa,-mrelax-relocations=no"
を付けて cabal で install したり stack の stack.yaml に書いたりしましたが動かず。
最終的に ghci では動かないけれど ghc では動きました。どうも良く分からない……
Fedora 23 on Docker で動かした時の Dockerfile はこれです。
一応 Ubuntu 16.04 でも ghc でなら動いたはずです。
Haskell の環境構築とかデバッグとかのノウハウの不足を感じる。
環境構築で結構力尽きた感も若干あるけれどどこまで続くかな。
0 件のコメント:
コメントを投稿