使用自定义 gcc 位置构建包

Posted

技术标签:

【中文标题】使用自定义 gcc 位置构建包【英文标题】:Build package with custom gcc location 【发布时间】:2018-04-28 15:42:47 【问题描述】:

我试图通过 Makefile 用 gcc4.9 构建 c++ 包。 默认情况下,系统始终使用系统编译器 (/usr/bin/g++),即 gcc4.5。要使用 4.9,我已将其添加为我的包的依赖项。

要使用 GCC 的自定义位置,我在 Makefile 中设置了以下命令

override CXX := $(shell  some path)/gcc-rhel5/bin/g++
override CC := $(shell  some-path)/gcc-rhel5/bin/g++

在使用上述 g++ 路径构建此包后,但我遇到了异常。

/cc1plus:加载共享库时出错:libmpc.so.3:无法打开共享对象文件:没有这样的文件或目录

我该如何解决这个问题。

【问题讨论】:

你能从 shell 调用 that g++ 吗? 使用 shell 我只能获得自定义 gcc 位置 我的意思是你是否可以在 makefile 之外运行 g++ 而不会出现问题。 我想我应该是,实际上所有的东西都在远程机器上运行。 我不确定,但您可能需要将libmpc.so.3 的位置添加到LD_LIBRARY_PATH 环境变量中。 【参考方案1】:

假设您拥有完整的构建工具以及自定义版本的 gcc。只需像这样执行您的 make 命令。 请务必删除您添加到 makefile 中的行。您不应该对编译器路径进行硬编码。

$ cd yourproject/
$ PATH=some path/gcc-rhel5/bin LD_LIBRARY_PATH=some path/gcc-rhel5/lib make

注意:您需要完整的编译工具和编译器来执行此操作,还需要与您的自定义 gcc 版本相对应的共享库。即你不能只复制bin文件,你应该有一个像这样的目录结构......

-gcc-rhel5/
--bin/
---gcc
---g++
---make
---ld
--lib/
---libmpc.so.3
---libc.so.6
--(some other files)

【讨论】:

以上是关于使用自定义 gcc 位置构建包的主要内容,如果未能解决你的问题,请参考以下文章

打包/解包自定义对象的 HashMap 的最佳方法是啥?

ckeditor 表情包自定义

使用自定义构建的 gcc(g++) 构建 c++ 项目

如何在 Qt Creator 中启用自定义 gcc 参数? [复制]

使用 python 3.6 安装自定义构建 tensorflow 1.12 轮时出错

QSet:qHash 和自定义类出错