C++ 如何编译C++;在Ubuntu Linux下?
我将下面的代码从剪切粘贴到一个名为“avishay.cpp”的文件中,然后运行C++ 如何编译C++;在Ubuntu Linux下?,c++,gcc,C++,Gcc,我将下面的代码从剪切粘贴到一个名为“avishay.cpp”的文件中,然后运行 gcc avishay.cpp 仅从链接器获取以下错误消息。出了什么问题,我该怎么办 carl@carl-ubuntu:~/Projects/StackOverflow$ gcc -static avishay.cpp /tmp/cccRNW34.o: In function `__static_initialization_and_destruction_0(int, int)': avishay.cpp:(.
gcc avishay.cpp
仅从链接器获取以下错误消息。出了什么问题,我该怎么办
carl@carl-ubuntu:~/Projects/StackOverflow$ gcc -static avishay.cpp
/tmp/cccRNW34.o: In function `__static_initialization_and_destruction_0(int, int)':
avishay.cpp:(.text+0x41): undefined reference to `std::ios_base::Init::Init()'
avishay.cpp:(.text+0x46): undefined reference to `std::ios_base::Init::~Init()'
/tmp/cccRNW34.o: In function `A::func()':
avishay.cpp:(.text._ZN1A4funcEv[A::func()]+0x11): undefined reference to `std::cout'
avishay.cpp:(.text._ZN1A4funcEv[A::func()]+0x16): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)'
avishay.cpp:(.text._ZN1A4funcEv[A::func()]+0x1e): undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
avishay.cpp:(.text._ZN1A4funcEv[A::func()]+0x26): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))'
avishay.cpp:(.text._ZN1A4funcEv[A::func()]+0x36): undefined reference to `std::cout'
avishay.cpp:(.text._ZN1A4funcEv[A::func()]+0x3b): undefined reference to `std::basic_ostream<char, std::char_traits<char> >::operator<<(int)'
/tmp/cccRNW34.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
carl@carl-ubuntu:~/Projects/StackOverflow$gcc-static avishay.cpp
/tmp/cccRNW34.o:在函数“静态初始化”和“销毁0(int,int)”中:
avishay.cpp:(.text+0x41):对“std::ios_base::Init::Init()”的未定义引用
avishay.cpp:(.text+0x46):对“std::ios_base::Init::~Init()”的未定义引用
/tmp/cccRNW34.o:在函数'A::func()'中:
avishay.cpp:(.text._ZN1A4funcEv[A::func()]+0x11):对“std::cout”的未定义引用
AvISHay.CPP:(.T.NN1A4SimeV[A::FACKEOS])+0x16:未定义的引用“STD::Basic IoSooS&STD::运算符< P>您应该使用<代码> G++< /COD>,而不是<代码> GCC ,编译C++程序。
对于这个特定的程序,我只是键入
make avishay
然后让make
算出剩下的。给你的可执行文件一个体面的名字,而不是<代码> .Auth 你可能应该使用G++而不是GCC。
< P> G++是Linux下的C++编译器。代码看起来是正确的。您可能缺少一个库引用,该库引用被用作:
g++-l{library name here(math fns使用“m”)}codefile.cpp使用g++。并确保安装了相关的库。是的,使用g++进行编译。它将自动添加链接程序所需的对libstdc++的所有引用
g++ source.cpp -o source
如果省略-o
参数,则生成的可执行文件将命名为a.out
。在任何情况下,已设置可执行权限,因此无需chmod
任何操作
此外,当您解除对空指针的引用并试图调用不存在的对象上的成员函数时,代码将为您提供未定义的行为(可能还有SIGSEGV),因此它肯定不会打印任何内容。它可能会崩溃或跳一些时髦的舞蹈。使用
g++
空格后跟程序名。
e、 g:
g++prog.cpp
如果文件名在本例中为“prog.cpp”。
如果要运行程序写入,请执行以下操作:
./prog
所以我用
“进展”
因为它是我的文件名。
< P>你可以通过GCC编译你的C++代码。
听起来很有趣??是的。
试试看
享受更新您的apt获取:
$ sudo apt-get update
$ sudo apt-get install g++
运行您的程序。cpp:
$ g++ program.cpp
$ ./a.out
安装gcc并尝试下面的视频。
试试这个:
希望它对您有用。您可以使用g++--std=c++0x example.cpp-o example来编译source.cpp
,运行
g++ source.cpp
此命令将编译source.cpp
到同一目录中的文件a.out
。
要运行已编译的文件,请运行
./a.out
如果使用g++source2.cpp
编译另一个源文件,则新编译的文件a.out
将覆盖使用source.cpp
生成的a.out
如果要将source.cpp
编译为特定文件,请说compiledfile
,
跑
或
这将创建编译文件
,它是已编译的二进制文件。要运行编译文件
,请运行
./compiledfile
如果g++
不在$PATH
中,请将g++替换为/usr/bin/g++
谢谢。就在昨天,我不知道如何拼写“C++程序员”,而今天我就是其中之一!另一个+1(如果我可以的话)作为“制造”提示。我从来不知道make能/会那样做!“制造”在这里是如何工作的?我试过“makeserialrob.c”,它说“没什么可做的”,我想,诀窍是让它使用它的隐式规则。如果它像我一样适用于你,那么“make serial rob”(不带.c)应该可以。之所以make serial rob.c
不起作用,是因为该文件已经生成,它已经存在。另一方面,make查找名为serial rob的文件时,它不在那里,但它有一个隐式规则,可以将*.c转换成*.o,然后转换成*我花了很多钱购买Ubuntu。。。哦,等等,我没有!但是,是的,问题在于我如何调用编译器。是的,代码是另一个问题(链接)的一部分,并在那里受到了应有的打击。为了快速测试,我不介意程序被称为a.out,而且我知道-o。我的主要问题是编译器名称,谢谢!输出文件的副本将是“a.out”,除非您使用-o
标记。在其他答案中,此答案更清晰、更切题。谢谢。
./a.out
g++ source.cpp -o compiledfile
g++ -o compiledfile source.cpp
./compiledfile