繁体   English   中英

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

[英]check g++ version being used in 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一起编译和安装。 在本地Linux发行版中,gcc的典型路径是/usr/bin/g++

gcc是一个非常大,复杂的软件包。 预期它会作为本机Linux发行版的一部分进行构建和配置。 当然可以配置和构建其他版本的gcc,以补充Linux发行版随附的gcc。 我之前已经完成了几个过程,但这是一个漫长而复杂的痛苦过程。 没有执行此操作的方法,具体信息取决于主机Linux发行版。

每次都是全新的体验。 经常,gcc的configure脚本弄错了一些细节,最后必须修补gcc的configure脚本的某些部分,以使gcc在主机发行版上正确构建。

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

因此,要构建gcc,不仅要具有丰富的开发经验,而且还要具有构建大型而复杂的自由软件包的经验。 为了构建gcc,还必须对用来构建gcc的GNU工具链以及数千种其他免费软件包具有广泛的知识和了解: autoconfautomakelibtool ,以及(取决于所讨论的软件包)其他一些。

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

一个简单的解决方案是编译并运行以下程序:

#include <iostream>

int main()
{
    std::cout << __VERSION__ << std::endl;
}

这将打印用于编译程序的g ++版本。 __VERSION__是g ++定义的宏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM