LoginSignup
13
12
エンジニアキャリアについてあなたの考えをシェアしよう!

LLVMソースコードのコンパイルをしようと思ってハマった罠とそこから脱出するための努力

Last updated at Posted at 2018-03-22

LLVMのソースコードのコンパイルをしてみた。

Macintoshでやろうと思ったのがドツボだった。

さらにVMwareでUbuntuでやろうとしたら、メモリの割り当て不足でダメだった。

SWAP領域はMemoryより大きく
https://researchmap.jp/jom11s1ew-1797580/#_1797580

LLVM TEST SUITE FAIL RESULT on Linux and Mac OS X
https://researchmap.jp/joi0gsyic-1797580/#_1797580

現在、dockerで、、、

Macintosh

brew install --with-clang llvm

ここに到達するのに約ひと月。一つづつ試しては、、、。

brew install llvm
https://researchmap.jp/jociec00w-1797580/#_1797580

$ cmake --build . --target install
$ make check-all

* snip *

  Testing Time: 2076.17s
  Expected Passes    : 20893
  Expected Failures  : 140
  Unsupported Tests  : 438

OS X コマンドライン版cc (Clang LLVM cc)のインストール方法 (Xcode CLI / Command Line Tools for Xcodeのインストール)
https://qiita.com/k-oshima@github/items/61ae067984f0099cbdaf

LLVMエラー対処例
https://qiita.com/ssqiita/items/0c3b39f00124759a0cbb

xcodeで Apple LLVM error が出た時の対処
https://qiita.com/terrierscript/items/5c9d819aa31b8515d0e8

Homebrew で llvm 入れてる状態で brew doctor したら Warning 出たので対処した
https://qiita.com/bird_tummy/items/d9be70571bda9507d04d

OS XにLLVMをsvnインストールする
https://qiita.com/satzz/items/bee20a506ce29c39d042

portよりはapt-getを推奨。対応ソフトの大さから。

Debian/Ubuntu

[メモ] LLVM
https://qiita.com/uint256_t/items/ae74cb74c3c6cd7c445b

##Redhat/Centos
CentOS5にLLVMとclangをインストールする | CentOS
https://qiita.com/yukikimoto/items/78d4bdc218e98712c6a1

Windows

Visual Studioの設定について
https://qiita.com/lunatea/items/d1408fc1795579228cc3

Docker

llvm-clang環境のDockerを作ってDocker Hubにpushした。
https://qiita.com/nak1114/items/8cc97fa405be14a34181

LLVM

LLVM bitcode基礎知識
https://qiita.com/gamako/items/f37dbb05de9d3832ce6b

LLVMのプロファイル情報を紐解いてみた〜カバレッジ編〜
https://qiita.com/hydrangeas/items/1f2dd9c119f27bea89a0

オンラインでコンパイル結果のアセンブリを確認
https://qiita.com/ken1ma/items/2aa16a0d5dab00321aac

LLVM コンパイラ・インタプリタ

普通の大学生が【LLVM】やってみた
https://qiita.com/long_long_float/items/50ba0d9dc4075f3934a1

C++11インタプリタ Clingのビルド
https://qiita.com/mugwort_rc/items/3dead38e953ebb294051

正規表現からLLVMへのコンパイラを実装する
https://qiita.com/yyu/items/a0ef2d2204c137707f3f

OCamlのSedlex+Menhir+LLVMでLispコンパイラを作ろうとしたが行き詰まった件
https://qiita.com/Tamamu/items/e647c18403681df15c42

LLVMに実行可能コードの生成をまかせたい
https://qiita.com/k2ymg/items/653c5b22b74a091be604

Orelang(俺言語) の LLVM IR コンパイラを作ってみた
https://qiita.com/soramimi_jp/items/b7a0a9de381f3c320fe6

パターンマッチの作り方(1) はじめに
https://qiita.com/h_sakurai/items/04c242ea86810334cb1d

パターンマッチの作り方(2) LLVM入門
https://qiita.com/h_sakurai/items/20a858e7c96ead6e581c

パターンマッチの作り方(3) 変数
https://qiita.com/h_sakurai/items/494548cca6919c400a23

パターンマッチの作り方(4) 構造体
https://qiita.com/h_sakurai/items/612c82a6966616e2bd8d

パターンマッチの作り方(5) 構造体初期化構文糖
https://qiita.com/h_sakurai/items/fe5995ee7012965995a8

パターンマッチの作り方(6) ヴァリアントの型と領域取得
https://qiita.com/h_sakurai/items/43fd0b5d738dd14e723e

パターンマッチの作り方(7) ヴァリアント初期化構文糖
https://qiita.com/h_sakurai/items/46799cfce2ba85a09614

パターンマッチの作り方(8) switch構文
https://qiita.com/h_sakurai/items/8b1e7a39fa8cc9f6cc0c

パターンマッチの作り方(9) α変換
https://qiita.com/h_sakurai/items/e58fc82d8b84d00ea400

パターンマッチの作り方(10) パターンマッチ構文
https://qiita.com/h_sakurai/items/5b0e283f1f326453431e

パターンマッチの作り方(11) パーサと型チェック
https://qiita.com/h_sakurai/items/35ab73346da23bf23a7c

Rustで簡単なLLVMコンパイラ
https://qiita.com/h_sakurai/items/8d22c484179c48552abe

PHPで作る簡単なLLVMコンパイラ
https://qiita.com/h_sakurai/items/be48588ca7cd45fe2f24

LLVM コンパイル

LLVMをVisual Studio 2017でコンパイルする
https://qiita.com/lpha_z/items/6c81d310c78459d29c78#_reference-99fe2e2743cff80bc199

Macでclang+OpenMP 2016
https://qiita.com/r9y9/items/2e382887ee7e9fa0fb9f

[clang,llvm] clang・llvm開発時のリンクオプションの簡単な見分け方
https://qiita.com/kktk-KO/items/1ca16b5ae63a35c8a648

LLVM コーディング

[翻訳] LLVMコーディング標準(5.0.1)
https://qiita.com/tenmyo/items/7e4847b88e63d5769dd8

[翻訳] LLVMコーディング標準3.9.1(1/4):目次&はじめに
https://qiita.com/tenmyo/items/5d9fae50d941655350ca

[翻訳] LLVMコーディング標準3.9.1(2/4):言語、ライブラリ、および標準
https://qiita.com/tenmyo/items/e1194d8093b7a79abd5f#_reference-5c53985d45ed22fcf20f

[翻訳] LLVMコーディング標準3.9.1(3/4)機械的なソースの問題
https://qiita.com/tenmyo/items/eb0fd21212ff0184e933#_reference-9c1f65ef75b1d80b9c82

[翻訳] LLVMコーディング標準3.9.1(4/4):スタイルの問題
https://qiita.com/tenmyo/items/c452c5c527b743d4b96e

コンパイラ参考資料

大川知、鈴木大郎 著「コンパイラ 言語処理系の基礎からyacc/lexまで」近代科学社(2008)のソースをMacintoshでコンパイル(C++版)
https://qiita.com/kaizen_nagoya/items/f49ca516f8a56aeed57a

大川知、鈴木大郎 著「コンパイラ 言語処理系の基礎からyacc/lexまで」近代科学社(2008)のソースをMacintoshで実行(java版)
https://qiita.com/kaizen_nagoya/items/1606e97b7f10bf8fe519

大川知、鈴木大郎 著「コンパイラ 言語処理系の基礎からyacc/lexまで」近代科学社(2008)のソースをWindowsでコンパイル(C++版)
https://qiita.com/kaizen_nagoya/items/0fa79446472058bf8903

C,C++参考資料

C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9

[C][C++]の国際規格案の例題をコンパイルするときの課題7つ。
https://qiita.com/kaizen_nagoya/items/5f4b155030259497c4de

MISRA C まとめ #include
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9

コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)
https://qiita.com/kaizen_nagoya/items/74220c0577a512c2d7da#_reference-767b9a9b8f017bc681a1

C言語の配列は勉強できない仕様に変わったのか?
https://qiita.com/chesscommands/items/68d8237eccf5fac05e13

C言語規格と、Cコンパイラと、C言語記述の3つの関係を誤解されているように感じました。未定義の処理を自分が思おうようにしようと思ったら、自分でCコンパイラを書けば良いだけだと思います。

私がコンパイラを勉強した27年前、Pascalで書かれたコンパイラをCに書き直しました。3週間で書き直したソースが、3年かかってもバグが取れませんでした。デバッグモードでは動作するが、デバッグモード以外では動作しないという。その後MISRA Cというコーディング標準の仕事をするようになって、配列の管理がまずかったことが想定できました。チェッカを作ればよかった。

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

文書履歴(document history)

ver. 0.01 初稿  20180823
ver. 0.02 ありがとう追記 20230502

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

13
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
12