返回信息流安装gcc 的时候会自动安装 libstdc++ 吗?
如果想让他们支持C++11 是不是要把他们升级到某一个新的版本?
以上均指在linux系统下
求解答 万谢
这是一条镜像帖。来源:北邮人论坛 / cpp / #91863同步于 2016/5/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
问个脑残点的问题:gcc 和 libstdc++
byr10086
2016/5/27镜像同步15 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 byr10086 的大作中提到: 】
: 安装gcc 的时候会自动安装 libstdc++ 吗?
: 如果想让他们支持C++11 是不是要把他们升级到某一个新的版本?
: 以上均指在linux系统下
: ...................
这些问题都不脑残。这是“二进制兼容性”的问题,是C++程序员最头疼的问题之一。
1. 在我的archlinux上,libstdc++.so是gcc-libs包提供的,而libc.so是glibc包提供的。但这两个都是系统必要的包(archlinux里是base组,这个组里的包是新装的系统装的,基本上不可能不要)。卸载哪一个都会引发大问题。
2. 需要。libstdc++的ABI变化过很多次。 https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html 这个页面有ABI变化的历史。作为C++程序员,需要做的是保证用户的机器上的libstdc++的ABI版本和你编译C++时编译器用的ABI版本一致。
但是,如果真的关心二进制兼容性的话,还是用Java吧。Java在二进制兼容性上做得比C++好得多。.class文件有jvm的版本,标准规定,很明确。不像C++,C++的二进制兼容性完全是具体的实现来定义的。其实还有个libc++,是llvm提供的另一个C++运行时库。用clang++编译C++程序的时候可以选择用libstdc++(GCC提供)还是libc++(llvm提供)。
果然又是暖神,只是还有点不明白的地方
既然gcc会提供libstdc++ 那为什么当我用rpm来安装gcc时却发现gcc的依赖包中有 libstdc++ ?
另外,gcc-c++-4.4.6-4.el6.x86_64.rpm 是什么啊?
【 在 nuanyangyang 的大作中提到: 】
:
: 这些问题都不脑残。这是“二进制兼容性”的问题,是C++程序员最头疼的问题之一。
: 1. 在我的archlinux上,libstdc++.so是gcc-libs包提供的,而libc.so是glibc包提供的。但这两个都是系统必要的包(archlinux里是base组,这个组里的包是新装的系统装的,基本上不可能不要)。卸载哪一个都会引发大问题。
: ...................
【 在 byr10086 的大作中提到: 】
: 果然又是暖神,只是还有点不明白的地方
: 既然gcc会提供libstdc++ 那为什么当我用rpm来安装gcc时却发现gcc的依赖包中有 libstdc++ ?
libstdc++确实是GCC的开发人员提供的,但是它是一个单独的工程。它的主页在这里: https://gcc.gnu.org/libstdc++/
不同的发行版会用不同的方法打包。比如archlinux里的gcc-libs并不是gcc本身,而是gcc提供的运行时库,包括libstdc++。你用的应该是rhel或者centos,他们打包的方法和archlinux不一样。比如他们可以专门给libstdc++打一个包。
: 另外,gcc-c++-4.4.6-4.el6.x86_64.rpm 是什么啊?
: ...................
那是g++,也就是gcc的C++编译器。并不是运行时库。
【 在 nuanyangyang 的大作中提到: 】
:
: libstdc++确实是GCC的开发人员提供的,但是它是一个单独的工程。它的主页在这里: https://gcc.gnu.org/libstdc++/
: 不同的发行版会用不同的方法打包。比如archlinux里的gcc-libs并不是gcc本身,而是gcc提供的运行时库,包括libstdc++。你用的应该是rhel或者centos,他们打包的方法和archlinux不一样。比如他们可以专门给libstdc++打一个包。
我是说gcc的安装包会提供libstdc++, 那为什么gcc的安装包的依赖包中还会有libstdc++ ?
: ...................
【 在 byr10086 的大作中提到: 】
:
: 我是说gcc的安装包会提供libstdc++, 那为什么gcc的安装包的依赖包中还会有libstdc++ ?
谁说gcc的安装包会提供libstdc++?
【 在 nuanyangyang 的大作中提到: 】
:
: 这些问题都不脑残。这是“二进制兼容性”的问题,是C++程序员最头疼的问题之一。
: 1. 在我的archlinux上,libstdc++.so是gcc-libs包提供的,而libc.so是glibc包提供的。但这两个都是系统必要的包(archlinux里是base组,这个组里的包是新装的系统装的,基本上不可能不要)。卸载哪一个都会引发大问题。
: ...................
goddess~~
【 在 nuanyangyang 的大作中提到: 】
:
: 这些问题都不脑残。这是“二进制兼容性”的问题,是C++程序员最头疼的问题之一。
: 1. 在我的archlinux上,libstdc++.so是gcc-libs包提供的,而libc.so是glibc包提供的。但这两个都是系统必要的包(archlinux里是base组,这个组里的包是新装的系统装的,基本上不可能不要)。卸载哪一个都会引发大问题。
: ...................
还有什么问题,都拿来!!! 暖神喊道
【 在 nuanyangyang 的大作中提到: 】
:
: 谁说gcc的安装包会提供libstdc++?
也就是说我需要分别安装gcc 和 libstdc++ ?
【 在 byr10086 的大作中提到: 】
:
: 也就是说我需要分别安装gcc 和 libstdc++ ?
这是两个包。但我想libstdc++应该是一开始就装上了的,你应该卸不掉。如果强制卸载应该会出问题的。