ubuntu下 GCC编译程序出现 undefined reference to `std::ios_base::Init::Init()'问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu下 GCC编译程序出现 undefined reference to `std::ios_base::Init::Init()'问题相关的知识,希望对你有一定的参考价值。
网上的解释是:“ you need to add -lstdc++, or use ‘g++‘ rather than ‘gcc‘ as your driver program.”,也就是说如果想要使用g++编译程序的话,那么链接时需要添加“-Istdc++”。
我试了一下 , 在链接时加上"-Istdc++",就没有问题了。
关于g++,让我想起了,在ubuntu下一开始安装完code::blocks的时候,提示需要安装g++。原来code::blocks内置编译器使用的是g++,但是为什么在建工程的时候,提示使用的编译器是gcc呢??
这就引来了一个问题:“gcc和g++的区别和联系是什么?”网上搜了一下“gcc和g++”(http://www.yuanma.org/data/2007/0406/article_2498.htm),整理下来有这么几条是有用的:
(1)gcc和g++都是GNU(组织)的一个编译器。
(2)后缀名为.c的程序和.cpp的程序g++都会当成是c++的源程序来处理。而gcc不然,gcc会把.c的程序处理成c程序。
(3)对于.cpp的程序,编译可以用gcc/g++,而链接可以用g++或者gcc -lstdc++。(个人觉得这条是最重要的)
以上是关于ubuntu下 GCC编译程序出现 undefined reference to `std::ios_base::Init::Init()'问题的主要内容,如果未能解决你的问题,请参考以下文章
GCC编译连接问题stl_algobase.h:343: undefined reference to
gcc编译出现 undefined reference to ‘pthread_create‘ 的解决方法
gcc编译出现 undefined reference to ‘pthread_create‘ 的解决方法
ubuntu下调试ffmpeg程序出现undefined reference to pthread_once ,undefined reference to uncompress错误