Ubuntu C++ 编译问题详解
【摘要】 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,如下所示:
(2)添加 -lstdc++ 库引用,如下所示:
三、gcc 和 g++ 的区别
gcc 在编译 c++ 的代码时,gcc 不能自动与 c++ 的库进行链接,需要指定链接的库,所以会导致上面的问题。
另外,g++ 在编译 c 语言程序时,实际上会调用 gcc 进行编译。在编译 C/C++ 代码时,可以在编译的时候直接使用 g++ 进行编译。
CSDN博客专家🏆,华为云享专家🏆,Linux、C/C++、面试、刷题、算法尽管咨询我,关注我,有问题私聊!
欢迎小伙伴们点赞👍、收藏⭐、留言💬
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)