Ubuntu C++ 编译问题详解

举报
Linux猿 发表于 2021/12/06 22:47:18 2021/12/06
3.1k+ 0 0
【摘要】 CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊! 欢迎小伙伴们点赞👍、收藏⭐、留言💬

🎈 作者:Linux猿

🎈 简介:CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

🎈 欢迎小伙伴们点赞👍、收藏⭐、留言💬


一、问题描述

今天在使用 Ubuntu 中的 gcc 编译器编译 C++ 代码的时候,突然出现了错误,之前好像一直没有问题,编译的错误如下所示:

linuxy@linuxy:~$ gcc -o main main.cpp
/usr/bin/ld: /tmp/ccB5m3UO.o: in function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0x38): undefined reference to `std::ios_base::Init::Init()'
/usr/bin/ld: main.cpp:(.text+0x4d): undefined reference to `std::ios_base::Init::~Init()'
collect2: error: ld returned 1 exit status
linuxy@linuxy:~$

二、解决方法

这个问题主要是链接库出现了问题,这个问题解决方法有多种,下面就来看一下,如下所示:

(1)使用 g++ 代替 gcc,如下所示:

linuxy@linuxy:~$ g++ -o main main.cpp

(2)添加 -lstdc++ 库引用,如下所示:

linuxy@linuxy:~$ gcc -o main main.cpp -lstdc++

三、gcc 和 g++ 的区别

gcc 在编译 c++ 的代码时,gcc 不能自动与 c++ 的库进行链接,需要指定链接的库,所以会导致上面的问题。

另外,g++ 在编译 c 语言程序时,实际上会调用 gcc 进行编译。在编译 C/C++ 代码时,可以在编译的时候直接使用 g++ 进行编译。


CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

欢迎小伙伴们点赞👍、收藏⭐、留言💬


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。