c++ - 检查 Makefile 中使用的 g++ 版本

标签 c++ unix gcc makefile

我正在编译一些开源代码,它给了我以下错误:

g++: error: /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crti.o: No such file or directory

这表明正在使用的版本是 4.1.2。但是,当我这样做时: which g++ ,输出是: /opt/gcc/4.9.2/bin/g++ 。这表明正在使用 4.9.2。我很困惑,有人可以帮助我了解发生了什么吗?我没有做过很多 unix。

最佳答案

您的路径 /opt/gcc/4.9.2/bin/g++ 表明这不是打包为您正在使用的任何 Linux 发行版(或 Unix)的一部分的 gcc。相反,这是与您的发行版的 gcc 一起编译和安装的不同版本的 gcc。 gcc 在原生 Linux 发行版上的典型路径是 /usr/bin/g++

gcc 是一个非常庞大、复杂的软件包。预计它会作为原生 Linux 发行版的一部分进行构建和配置。当然可以配置和构建不同版本的 gcc,以补充 Linux 发行版附带的版本。我以前做过,有几个过程,但这是一个漫长、复杂、痛苦的过程。没有千篇一律的方法,细节因主机 Linux 发行版而异。

每次都是全新的体验。很多时候,gcc 的配置脚本会在一些细节上出错,并且最终必须修补 gcc 的配置脚本的某些部分,以便使 gcc 在主机发行版上正确构建。

当出现问题时,您会得到像这样的典型结果——断开的链接路径。有时您最终会遇到头文件或其他一些问题。

因此,要构建 gcc,不仅要有丰富的开发经验,还要有构建大型复杂的免费软件包的经验。为了构建 gcc,还必须对用于构建 gcc 的 GNU 工具链以及数以千计的其他免费软件包有广泛的知识和理解:autoconfautomakelibtool,并且,根据所讨论的软件包,可能还有其他一些。

因此,您需要联系经验丰富的系统管理员或开发人员团队,他们最初构建了 gcc 4.9.2 的自定义安装并将其安装在/opt 中,然后向他们展示您遇到的这个错误,并让他们弄清楚 gcc 是如何配置错误的,所以它最终会链接错误。

关于c++ - 检查 Makefile 中使用的 g++ 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35122258/

相关文章:

c++ - 链接器输入文件未使用,因为链接未完成

c++ - 是否可以将 int 添加到 pair 中?

c++ - 为什么 param 在以下情况下需要两个参数 :

C++:为什么程序从输入文件中读取最后一个空白作为元素

linux - 验证用户在 shell 脚本中输入的日期时间格式

c++ - 有没有办法从函数返回新对象或对现有对象的引用?

c++ - 如何正确编译box2d helloworld

c - 在postgresql中执行系统命令

linux - 如何将所有具有相同后缀的文件复制到另一个目录? - Unix

python - 安装pyipopt的问题