diary/Kojima/2013-09-01
の編集
http://sv5.linet.gr.jp/?diary/Kojima/2013-09-01
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
diary/Template
[[diary/Kojima]] ・LLVM-3.3 on Plamo-5.1/i586(その2) 64ビット用のビルドスクリプトを32ビット用に直してLLVM-3.3をコンパイル、ビルド。 パッケージ化もエラーなく進んだので、できたパッケージをインストールしてLLVMを使う libclcをビルドしようとすると、ビルドが途中で止まってしまう。 ちなみにlibclcはOpenCL 1.1仕様に基づくOpen CL C言語用のライブラリらしい LLVM-LINK nvptx--nvidiacl/lib/builtins.link.bc OPT nvptx--nvidiacl/lib/builtins.opt.bc LLVM-CXX utils/prepare-builtins.o In file included from ./utils/prepare-builtins.cpp:1: /usr/include/llvm/ADT/OwningPtr.h:18:10: fatal error: 'cassert' file not found #include <cassert> ^ 1 error generated. make: *** [utils/prepare-builtins.o] エラー 1 エラーは"インクルードファイルのcassertがない"という明快な内容なものの, C++用のcassertはちゃんと存在している. $ ls -l /usr/include/c++/4.6.3/cassert -rw-r--r-- 1 root root 1,699 4月 18日 2012年 /usr/include/c++/4.6.3/cassert おかしいなぁ,,と思って,C++の"Hello World!" で試してみると, やはりインクルードファイル回りでコケる. #include <iostream> int main() { std::cout << "Hello World!\n"; return 0; } $ clang++ test.cpp test.cpp:1:10: fatal error: 'iostream' file not found #include <iostream> ^ 1 error generated. もう少しエラー表示を詳しくさせようと,-v オプションを指定してみると どうやらインクルードファイルを /usr/include/c++/4.6.3/ 以下に探しにいっていない模様. $ clang++ -v test.cpp clang version 3.3 (tags/RELEASE_33/final) Target: i386-plamo-linux-gnu Thread model: posix "/usr/bin/clang-3.3" -cc1 -triple i386-plamo-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name test.cpp -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -target-cpu pentium4 -v -resource-dir /usr/bin/../lib/clang/3.3 -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/clang/3.3/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir /mnt/Srcs/L/LLVM -ferror-limit 19 -fmessage-length 95 -mstackrealign -fobjc-runtime=gcc -fobjc-default-synthesize-properties -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -backend-option -vectorize-loops -o /tmp/test-CT8OmO.o -x c++ test.cpp clang -cc1 version 3.3 based upon LLVM 3.3svn default target i386-plamo-linux-gnu ignoring nonexistent directory "/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/bin/../lib/clang/3.3/include /usr/include End of search list. test.cpp:1:10: fatal error: 'iostream' file not found #include <iostream> ^ 1 error generated. それでは,と,-IオプションでC++用のヘッダファイルを明示してみると, 別のヘッダファイルで引っかかる. $ clang++ test.cpp -I/usr/include/c++/4.6.3 In file included from test.cpp:1: /usr/include/c++/4.6.3/iostream:39:10: fatal error: 'bits/c++config.h' file not found #include <bits/c++config.h> ^ 1 error generated. c++config.h というファイルを調べてみると /usr/include/c++/4.6.3/i586-pc-linux-gnu/bits/c++config.h にあるはずだ. $ grep c++config.h /var/log/packages/* /var/log/packages/g++:usr/include/c++/4.6.3/i586-pc-linux-gnu/bits/c++config.h これも-Iオプションで指定してやると, インクルードファイルは見付けて,コンパイルは通ったようだが, 今度はリンク時にエラーになる. $ clang++ -v test.cpp -I/usr/include/c++/4.6.3 -I/usr/include/c++/4.6.3/i586-pc-linux-gnu clang version 3.3 (tags/RELEASE_33/final) Target: i386-plamo-linux-gnu Thread model: posix "/usr/bin/clang-3.3" -cc1 -triple i386-plamo-linux-gnu -emit-obj -mrelax-all ... clang -cc1 version 3.3 based upon LLVM 3.3svn default target i386-plamo-linux-gnu ignoring nonexistent directory "/include" #include "..." search starts here: #include <...> search starts here: /usr/include/c++/4.6.3 /usr/include/c++/4.6.3/i586-pc-linux-gnu /usr/local/include /usr/bin/../lib/clang/3.3/include /usr/include End of search list. "/usr/bin/ld" --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o a.out /usr/lib/crt1.o /usr/lib/crti.o crtbegin.o -L/lib -L/usr/lib /tmp/test-dMwktf.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc crtend.o /usr/lib/crtn.o /usr/bin/ld: cannot find crtbegin.o: No such file or directory /usr/bin/ld: cannot find -lgcc clang-3.3: error: linker command failed with exit code 1 (use -v to see invocation) うーん,,今度はリンカがスタートアップファイルを見つけられないようだ. さてどうしたものか,,と首を捻ったのであった.. (続く) #comment
タイムスタンプを変更しない
[[diary/Kojima]] ・LLVM-3.3 on Plamo-5.1/i586(その2) 64ビット用のビルドスクリプトを32ビット用に直してLLVM-3.3をコンパイル、ビルド。 パッケージ化もエラーなく進んだので、できたパッケージをインストールしてLLVMを使う libclcをビルドしようとすると、ビルドが途中で止まってしまう。 ちなみにlibclcはOpenCL 1.1仕様に基づくOpen CL C言語用のライブラリらしい LLVM-LINK nvptx--nvidiacl/lib/builtins.link.bc OPT nvptx--nvidiacl/lib/builtins.opt.bc LLVM-CXX utils/prepare-builtins.o In file included from ./utils/prepare-builtins.cpp:1: /usr/include/llvm/ADT/OwningPtr.h:18:10: fatal error: 'cassert' file not found #include <cassert> ^ 1 error generated. make: *** [utils/prepare-builtins.o] エラー 1 エラーは"インクルードファイルのcassertがない"という明快な内容なものの, C++用のcassertはちゃんと存在している. $ ls -l /usr/include/c++/4.6.3/cassert -rw-r--r-- 1 root root 1,699 4月 18日 2012年 /usr/include/c++/4.6.3/cassert おかしいなぁ,,と思って,C++の"Hello World!" で試してみると, やはりインクルードファイル回りでコケる. #include <iostream> int main() { std::cout << "Hello World!\n"; return 0; } $ clang++ test.cpp test.cpp:1:10: fatal error: 'iostream' file not found #include <iostream> ^ 1 error generated. もう少しエラー表示を詳しくさせようと,-v オプションを指定してみると どうやらインクルードファイルを /usr/include/c++/4.6.3/ 以下に探しにいっていない模様. $ clang++ -v test.cpp clang version 3.3 (tags/RELEASE_33/final) Target: i386-plamo-linux-gnu Thread model: posix "/usr/bin/clang-3.3" -cc1 -triple i386-plamo-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name test.cpp -mrelocation-model static -mdisable-fp-elim -fmath-errno -masm-verbose -mconstructor-aliases -target-cpu pentium4 -v -resource-dir /usr/bin/../lib/clang/3.3 -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/clang/3.3/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -fdeprecated-macro -fdebug-compilation-dir /mnt/Srcs/L/LLVM -ferror-limit 19 -fmessage-length 95 -mstackrealign -fobjc-runtime=gcc -fobjc-default-synthesize-properties -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -backend-option -vectorize-loops -o /tmp/test-CT8OmO.o -x c++ test.cpp clang -cc1 version 3.3 based upon LLVM 3.3svn default target i386-plamo-linux-gnu ignoring nonexistent directory "/include" #include "..." search starts here: #include <...> search starts here: /usr/local/include /usr/bin/../lib/clang/3.3/include /usr/include End of search list. test.cpp:1:10: fatal error: 'iostream' file not found #include <iostream> ^ 1 error generated. それでは,と,-IオプションでC++用のヘッダファイルを明示してみると, 別のヘッダファイルで引っかかる. $ clang++ test.cpp -I/usr/include/c++/4.6.3 In file included from test.cpp:1: /usr/include/c++/4.6.3/iostream:39:10: fatal error: 'bits/c++config.h' file not found #include <bits/c++config.h> ^ 1 error generated. c++config.h というファイルを調べてみると /usr/include/c++/4.6.3/i586-pc-linux-gnu/bits/c++config.h にあるはずだ. $ grep c++config.h /var/log/packages/* /var/log/packages/g++:usr/include/c++/4.6.3/i586-pc-linux-gnu/bits/c++config.h これも-Iオプションで指定してやると, インクルードファイルは見付けて,コンパイルは通ったようだが, 今度はリンク時にエラーになる. $ clang++ -v test.cpp -I/usr/include/c++/4.6.3 -I/usr/include/c++/4.6.3/i586-pc-linux-gnu clang version 3.3 (tags/RELEASE_33/final) Target: i386-plamo-linux-gnu Thread model: posix "/usr/bin/clang-3.3" -cc1 -triple i386-plamo-linux-gnu -emit-obj -mrelax-all ... clang -cc1 version 3.3 based upon LLVM 3.3svn default target i386-plamo-linux-gnu ignoring nonexistent directory "/include" #include "..." search starts here: #include <...> search starts here: /usr/include/c++/4.6.3 /usr/include/c++/4.6.3/i586-pc-linux-gnu /usr/local/include /usr/bin/../lib/clang/3.3/include /usr/include End of search list. "/usr/bin/ld" --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o a.out /usr/lib/crt1.o /usr/lib/crti.o crtbegin.o -L/lib -L/usr/lib /tmp/test-dMwktf.o -lstdc++ -lm -lgcc_s -lgcc -lc -lgcc_s -lgcc crtend.o /usr/lib/crtn.o /usr/bin/ld: cannot find crtbegin.o: No such file or directory /usr/bin/ld: cannot find -lgcc clang-3.3: error: linker command failed with exit code 1 (use -v to see invocation) うーん,,今度はリンカがスタートアップファイルを見つけられないようだ. さてどうしたものか,,と首を捻ったのであった.. (続く) #comment
テキスト整形のルールを表示する