这个使用标准库的非常简单的 C 程序不能用 GCC 编译

新手上路,请多包涵

我不明白为什么这不起作用…

我在 Linux 中工作。

g++ 不做任何事情。

gcc 打印以下内容:

 /tmp/ccyg7NDd.o: In function `main':
test.cc:(.text+0x14): undefined reference to `std::cout'
test.cc:(.text+0x19): 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*)'
test.cc:(.text+0x21): 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> >&)'
test.cc:(.text+0x29): 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> >&))'
/tmp/ccyg7NDd.o: In function `__static_initialization_and_destruction_0(int, int)':
test.cc:(.text+0x51): undefined reference to `std::ios_base::Init::Init()'
test.cc:(.text+0x56): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccyg7NDd.o:(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status

代码:

 #include <iostream>
#include <stdio.h>

int main(){

    std::cout << "test " << std::endl;
    return 0;
};

原文由 spatara 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 543
2 个回答
g++ main.cpp

或者

gcc main.cpp -lstdc++

原文由 kev 发布,翻译遵循 CC BY-SA 4.0 许可协议

gcc 是 C 编译器。您需要使用 g++ (或使用 gcc 选项 -lstdc++ 正如其他人指出的那样)。如果在您使用 g++ 后没有打印任何内容,那么您必须在构建后执行编译的二进制文件(即,当 g++ 完成时)。

主.cpp

 #include <iostream>

int main(){

    std::cout<<"test "<<std::endl;
    return 0;
};

建造:

 g++ main.cpp -o main

执行:

 ./main

输出:

 test

原文由 hmjd 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题