clang未能连接2线主功能程序

NoS*_*tAl 3 c++ linker clang

我很容易得到clang,当我尝试编译简单的2行程序时会发生这种情况:(我在机器上有g ++,IDK,如果这是问题的原因)

clang teststring.cpp -v Ubuntu clang version 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-别名-target-CPU的Pentium4 -target链接器版本2.22 -momit叶帧指针-v -resource-DIR /usr/bin/../lib/clang/3.0 -fmodule缓存路径/无功/ 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- EXC eptions -fexceptions -fdiagnostics-show-option -fcolor-diagnostics -o /tmp/teststring-e3FNx4.o -x c ++ teststring.cpp clang -cc1 version 3.0基于llvm 3.0托管在i386-pc-linux-gnu上忽略不存在的目录"/ 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 /本地/包括’忽略重复目录"/ u sr/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/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 --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed/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 :(文本+ 0x2B访问):未定义参照std::string::operator+=(char const*)' teststring.cpp:(.text+0x3e): undefined reference to标准:: basic_string的,性病::分配器> ::〜basic_string的()' teststring.cpp :(文本+将0x58):未定义参考to std::basic_string<char, std::char_traits<char>, std::allocator<char> ::~basic_string()' teststring.cpp:(.text+0x79): undefined reference tostd :: terminate()'/ tmp /teststring-e3FNx4.o :(.eh_frame+0x13):未定义引用`__gxx_personality_v0'clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

PS好奇的节目是:

#include <string>
int main()
{
        std::string s;
        s+="banana";
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*lin 8

这是C++代码,因此请尝试使用clang++而不是clang将C++标准库链接起来.