[[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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS