8000 GitHub - Peter9606/llvm-tutorial: LLVM Tutorialを勉強するリポジトリ
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Peter9606/llvm-tutorial

 
 

Repository files navigation

llvm-tutorial

LLVM Tutorialを勉強するリポジトリ

How to compile samples

KaleidoscopeのChapter04以降で必要になるdynamic linkのコードが一部ビルドで正しく動きません. 今の所,llvmのgithubミラーのrelease_60ブランチだと正しく動作するようです. brewなどのパッケージでインストールされたllvmの場合,うまく動作しないので,githubからrelease_60ブランチのソースをチェックアウトし,コンパイルして使ってください.コンパイラは,macOSの場合,デフォルトのclang++を使えばよいようです.

LLVMのビルド

git clone https://github.com/llvm-mirror/llvm.git
cd llvm
git checkout -b release_60 origin/release_60
mkdir build
cd build
CC=gcc CXX=g++                              \
cmake -DCMAKE_INSTALL_PREFIX=/usr           \
      -DLLVM_ENABLE_FFI=ON                  \
      -DCMAKE_BUILD_TYPE=Release            \
      -DLLVM_BUILD_LLVM_DYLIB=ON            \
      -DLLVM_LINK_LLVM_DYLIB=ON             \
      -DLLVM_TARGETS_TO_BUILD="host;"       \
      -DLLVM_BUILD_TESTS=ON                 \
      -Wno-dev -G Ninja ..                  &&
ninja

LLVMのソース中のサンプルのビルドと動作確認

cd ./examples/Kaleidoscope/Chapter4/
g++ ./toy.cpp `../../../build/bin/llvm-config --cxxflags --ldflags --libs --libfiles --system-libs`
echo "extern printd(x);printd(1.0);" | ./a.out

正しくビルドできていれば,上記コードは,以下のような結果を出す.

ready> ready> Read extern: 
declare double @printd(double)

ready> ready> 1.000000
Evaluated to 0.000000
ready> ready> > Chapter4 sonson$ 

Table of contents

  1. Chapter 01
  2. Chapter 02
  3. Chapter 03
  4. Chapter 04
  5. Chapter 05
  6. Chapter 06
  7. Chapter 07
  8. Chapter 08
  9. Chapter 09
  10. Chapter 10

License

このリポジトリは,LLVMのソースコード,ドキュメントをベースに作成し,LLVM Release Licenseに従い,コンテンツを作成しています.

About

LLVM Tutorialを勉強するリポジトリ

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 96.4%
  • CMake 2.7%
  • Other 0.9%
0