3

私はclangをapt-get-edし、単純な2行のプログラムをコンパイルしようとすると、これが起こります:(マシンにg ++があり、それが問題の原因である場合はIDKがあります)

clang teststring.cpp -v Ubuntu clang バージョン 3.0-6ubuntu3 (tags/RELEASE_30/final) (LLVM 3.0 ベース) ターゲット: i386-pc-linux-gnu スレッド モデル: posix "/usr/bin/clang" -cc1 -triple i386-pc-linux-gnu -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -main-file-name teststring.cpp -mrelocation-model static -mdisable-fp-elim -masm-verbose - mconstructor-aliases -target-cpu pentium4 -target-linker-version 2.22 -momit-leaf-frame-pointer -v -resource-dir /usr/bin/../lib/clang/3.0 -fmodule-cache-path /var /tmp/clang-module-cache -internal-isystem /usr/include/c++/4.6 -internal-isystem /usr/include/c++/4.6/i686-linux-gnu -internal-isystem /usr/include/c++/4.6 /backward -internal-isystem /usr/local/include -internal-isystem /usr/bin/../lib/clang/3.0/include -internal-externc-isystem /usr/include/i686-linux-gnu -internal-externc-isystem /usr/include -fdeprecated-macro -ferror-limit 19 -fmessage-length 80 -fgnu-runtime -fobjc- runtime-has-arc -fobjc-runtime-has-weak -fobjc-fragile-abi -fcxx-exceptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/teststring-e3FNx4.o -x c++ テスト文字列。 cpp clang -cc1 バージョン 3.0 は、i386-pc-linux-gnu でホストされている llvm 3.0 に基づいており、存在しないディレクトリ "/usr/include/i686-linux-gnu" を無視します。存在しないディレクトリ "/usr/include/c++/4.6//i686- を無視します。 linux-gnu/32" 存在しないディレクトリを無視する "/usr/include/i686-linux-gnu/" 存在しないディレクトリを無視する "/usr/include/i686-linux-gnu" 重複するディレクトリを無視する "/usr/include/c++/4.6"重複するディレクトリを無視します "/usr/include/c++/4.6/i686-linux-gnu" 重複ディレクトリを無視 "/usr/include/c++/4.6/backward" 重複ディレクトリを無視 "/usr/include/c++/4.6" 重複ディレクトリを無視 "/usr/ include/c++/4.6/backward" 重複ディレクトリを無視 "/usr/include/c++/4.6" 重複ディレクトリを無視 "/usr/include/c++/4.6/i686-linux-gnu" 重複ディレクトリを無視 "/usr/include/c++ /4.6/backward" 重複ディレクトリを無視 "/usr/local/include" 重複ディレクトリを無視 "/usr/bin/../lib/clang/3.0/include" 重複ディレクトリを無視 "/usr/include" include "... " 検索はここから始まります: include <...> 検索はここから始まります: /usr/include/c++/4.6 /usr/include/c++/4.6/i686-linux-gnu /usr/include/c++/4.6/backward6/i686-linux-gnu" 重複するディレクトリ "/usr/include/c++/4.6/backward" を無視する" 重複するディレクトリ "/usr/include/c++/4.6" を無視する" 重複するディレクトリ "/usr/include/c++/4.6/backward を無視する" " 重複ディレクトリを無視 "/usr/include/c++/4.6" 重複ディレクトリを無視 "/usr/include/c++/4.6/i686-linux-gnu" 重複ディレクトリを無視 "/usr/include/c++/4.6/backward" 重複を無視ディレクトリ "/usr/local/include" 重複ディレクトリ "/usr/bin/../lib/clang/3.0/include" を無視 重複ディレクトリ "/usr/include" を無視 "..." 検索開始: include < ...> 検索はここから始まります: /usr/include/c++/4.6 /usr/include/c++/4.6/i686-linux-gnu /usr/include/c++/4.6/backward6/i686-linux-gnu" 重複するディレクトリ "/usr/include/c++/4.6/backward" を無視する" 重複するディレクトリ "/usr/include/c++/4.6" を無視する" 重複するディレクトリ "/usr/include/c++/4.6/backward を無視する" " 重複ディレクトリを無視 "/usr/include/c++/4.6" 重複ディレクトリを無視 "/usr/include/c++/4.6/i686-linux-gnu" 重複ディレクトリを無視 "/usr/include/c++/4.6/backward" 重複を無視ディレクトリ "/usr/local/include" 重複ディレクトリ "/usr/bin/../lib/clang/3.0/include" を無視 重複ディレクトリ "/usr/include" を無視 "..." 検索開始: include < ...> 検索はここから始まります: /usr/include/c++/4.6 /usr/include/c++/4.6/i686-linux-gnu /usr/include/c++/4.6/backward重複ディレクトリ「/usr/include/c++/4.6/backward」を無視 重複ディレクトリ「/usr/include/c++/4.6」を無視 重複ディレクトリ「/usr/include/c++/4.6/backward」を無視 重複ディレクトリ「/usr/」を無視include/c++/4.6" 重複ディレクトリを無視 "/usr/include/c++/4.6/i686-linux-gnu" 重複ディレクトリを無視 "/usr/include/c++/4.6/backward" 重複ディレクトリを無視 "/usr/local/include " 重複するディレクトリを無視する "/usr/bin/../lib/clang/3.0/include" 重複するディレクトリを無視する "/usr/include" インクルード "..." 検索はここから始まります: インクルード <...> 検索はここから始まります: /usr/include/c++/4.6 /usr/include/c++/4.6/i686-linux-gnu /usr/include/c++/4.6/backward重複ディレクトリ「/usr/include/c++/4.6/backward」を無視 重複ディレクトリ「/usr/include/c++/4.6」を無視 重複ディレクトリ「/usr/include/c++/4.6/backward」を無視 重複ディレクトリ「/usr/」を無視include/c++/4.6" 重複ディレクトリを無視 "/usr/include/c++/4.6/i686-linux-gnu" 重複ディレクトリを無視 "/usr/include/c++/4.6/backward" 重複ディレクトリを無視 "/usr/local/include " 重複するディレクトリを無視する "/usr/bin/../lib/clang/3.0/include" 重複するディレクトリを無視する "/usr/include" インクルード "..." 検索はここから始まります: インクルード <...> 検索はここから始まります: /usr/include/c++/4.6 /usr/include/c++/4.6/i686-linux-gnu /usr/include/c++/4.6/backward重複ディレクトリ「/usr/include/c++/4.6」を無視 重複ディレクトリ「/usr/include/c++/4.6/backward」を無視 重複ディレクトリ「/usr/include/c++/4.6」を無視 重複ディレクトリ「/usr/include/」を無視c++/4.6/i686-linux-gnu" 重複ディレクトリを無視 "/usr/include/c++/4.6/backward" 重複ディレクトリを無視 "/usr/local/include" 重複ディレクトリを無視 "/usr/bin/../lib/ clang/3.0/include" 重複ディレクトリを無視 "/usr/include" include "..." 検索はここから始まります: include <...> 検索はここから始まります: /usr/include/c++/4.6 /usr/include/c++/ 4.6/i686-linux-gnu /usr/include/c++/4.6/後方重複ディレクトリ「/usr/include/c++/4.6」を無視 重複ディレクトリ「/usr/include/c++/4.6/backward」を無視 重複ディレクトリ「/usr/include/c++/4.6」を無視 重複ディレクトリ「/usr/include/」を無視c++/4.6/i686-linux-gnu" 重複ディレクトリを無視 "/usr/include/c++/4.6/backward" 重複ディレクトリを無視 "/usr/local/include" 重複ディレクトリを無視 "/usr/bin/../lib/ clang/3.0/include" 重複ディレクトリを無視 "/usr/include" include "..." 検索はここから始まります: include <...> 検索はここから始まります: /usr/include/c++/4.6 /usr/include/c++/ 4.6/i686-linux-gnu /usr/include/c++/4.6/後方重複ディレクトリ「/usr/include/c++/4.6」を無視 重複ディレクトリ「/usr/include/c++/4.6/i686-linux-gnu」を無視 重複ディレクトリ「/usr/include/c++/4.6/backward」を無視 重複ディレクトリを無視"/usr/local/include" 重複ディレクトリを無視 "/usr/bin/../lib/clang/3.0/include" 重複ディレクトリを無視 "/usr/include" include "..." 検索はここから開始: include <. ..> 検索はここから始まります: /usr/include/c++/4.6 /usr/include/c++/4.6/i686-linux-gnu /usr/include/c++/4.6/backward重複ディレクトリ「/usr/include/c++/4.6」を無視 重複ディレクトリ「/usr/include/c++/4.6/i686-linux-gnu」を無視 重複ディレクトリ「/usr/include/c++/4.6/backward」を無視 重複ディレクトリを無視"/usr/local/include" 重複ディレクトリを無視 "/usr/bin/../lib/clang/3.0/include" 重複ディレクトリを無視 "/usr/include" include "..." 検索はここから開始: include <. ..> 検索はここから始まります: /usr/include/c++/4.6 /usr/include/c++/4.6/i686-linux-gnu /usr/include/c++/4.6/backward重複するディレクトリ "/usr/bin/../lib/clang/3.0/include" を無視する 重複するディレクトリ "/usr/include" を無視する include "..." 検索はここから開始: include <...> 検索はここから開始: / usr/include/c++/4.6 /usr/include/c++/4.6/i686-linux-gnu /usr/include/c++/4.6/後方重複するディレクトリ "/usr/bin/../lib/clang/3.0/include" を無視する 重複するディレクトリ "/usr/include" を無視する include "..." 検索はここから開始: include <...> 検索はここから開始: / usr/include/c++/4.6 /usr/include/c++/4.6/i686-linux-gnu /usr/include/c++/4.6/後方
/usr/local/include /usr/bin/../lib/clang/3.0/include /usr/
include /usr/include/i386-linux-gnu/ /usr/include/clang/3.0/include/ /usr/ lib/gcc/i686-linux-gnu/4.6/include/
/usr/lib/gcc/i686-linux-gnu/4.6/include-fixed/ 検索リストの終わり。
"/usr/bin/ld" -z relro --hash-style=gnu --as-needed --build-id --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so .2 -o a.out /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o /usr/lib/gcc/i686-linux -gnu/4.6/../../../i386-linux-gnu/crti.o /usr/lib/gcc/i686-linux-gnu/4.6/crtbegin.o -L/usr/lib/gcc/ i686-linux-gnu/4.6 -L/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu -L/lib/i386-linux-gnu -L /usr/lib/i386-linux-gnu -L/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu -L/usr/lib/gcc/ i686-linux-gnu/4.6/../../.. -L/lib/i386-linux-gnu -L/lib -L/usr/lib/i386-linux-gnu -L/usr/lib /tmp /teststring-e3FNx4.o -lgcc --必要に応じて -lgcc_s --必要に応じて不要 -lc -lgcc --必要に応じて -lgcc_s --必要に応じて不要 /usr/lib/gcc/i686-linux -gnu/4.6/crtend.o /usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crtn.o
/tmp/teststring-e3FNx4.o: 関数std::basic_string 内、std::allocatormain':
teststring.cpp:(.text+0x18): undefined reference to

::basic_string()' teststring.cpp:(.text+0x2b): std::string::operator+=(char const*)' teststring.cpp:(.text+0x3e): undefined reference tostd::basic_string、std::allocator への未定義の参照 >::~basic_string()' teststring.cpp:(.text+0x58): 未定義の参照std::terminate()' /tmp/teststring-e3FNx4.o:(.eh_frame+0x13): `__gxx_personality_v0'へ std::basic_string<char, std::char_traits<char>, std::allocator<char> ::~basic_string()' teststring.cpp:(.text+0x79): undefined reference toの未定義の参照 clang: エラー: リンカー コマンドが終了コード 1 で失敗しました (呼び出しを確認するには -v を使用します)

好奇心旺盛なプログラムのPSは次のとおりです。

#include <string>
int main()
{
        std::string s;
        s+="banana";
}
4

1 に答える 1

8

これは C++ コードなので、C++ 標準ライブラリがリンクされるようclang++に代わりに使用してみてください。clang

于 2013-02-25T11:49:38.780 に答える