- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我在一个由 10 多个开发人员组成的团队中工作,我们将 RHEL 6.4 用于我们的开发机器和我们的服务器(部署我们的软件的地方)。
RHEL 6.4 附带 Boost 1.41,但我需要至少包含 1.47 的修复程序。我想升级到最新版本(目前是 1.56)。
它不像下载源代码和构建/安装那么容易,因为:
更糟糕的是,RedHat 似乎有自己专有的方式将 Boost 软件/库捆绑/打包到 RPM 中。他们不仅有一个 RPM,还有一系列更小的 RPM:
$ yum list installed|grep boost
boost.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-date-time.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-devel.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-filesystem.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-graph.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-iostreams.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-program-options.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-python.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-regex.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-serialization.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-signals.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-system.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-test.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-thread.x86_64 1.41.0-11.el6_1.2 @Workstation
boost-wave.x86_64 1.41.0-11.el6_1.2 @Workstation
我一直在谷歌搜索,找不到简单的解决方案。在 RPM 方面,我还是个新手。
在我们的情况下如何构建/部署 Boost 1.56 作为 RPM?
最佳答案
Sam 发布了一般策略(有效):从 Fedora 20 下载 Boost 1.54 源 RPM 并根据我的目的对其进行修改。
以下是我必须如何编辑 boost.spec 文件以将 RPM 重命名为 jason-boost* 并安装在/opt/install/thirdparty 下的额外详细信息。
将宏从 /usr
(默认)重新定义为 /opt/install/thirdparty
。添加到文件顶部:
# Override installation dirs. We don't want things to go into
# /usr (default) because they would overwrite the system Boost
# library.
%define _prefix /opt/install/thirdparty
%define _defaultdocdir /opt/install/thirdparty/share/doc
%define _mandir /opt/install/thirdparty/share/man
将名称
从“boost”更改为“jason-boost”
Summary
更改为“TBS LTE 升级版 Boost 库(无变化)”更改toplev_dirname
来自:
%define toplev_dirname %{name}_%{version_enc}
收件人:
%define toplev_dirname boost_%{version_enc}
更改Source0
来自:
Source0: http://downloads.sourceforge.net/%{name}/%{toplev_dirname}.tar.bz2
收件人:
Source0: http://downloads.sourceforge.net/boost/boost_1_54_0.tar.bz2
将“boost”子包重命名为“jason-boost”
例如
来自:
Requires: boost-atomic = %{version}-%{release}
收件人:
Requires: jason-boost-atomic = %{version}-%{release}
例如
来自:
Requires: boost = %{version}-%{release}
收件人:
Requires: jason-boost = %{version}-%{release}
添加--prefix=/opt/install/thirdparty
到bootstrap.sh
选项
来自:
./bootstrap.sh --with-toolset=gcc --with-icu
收件人:
./bootstrap.sh --with-toolset=gcc --with-icu --prefix=/opt/install/thirdparty
改变
来自:
%{_includedir}/%{name}
收件人:
%{_includedir}/boost
在不使用 python3、mpich 或 openmpi 的情况下构建 RPM。 Python3 在 RHEL 6.4 下不容易获得,mpich 和 openmpi 有各种其他编译问题。
rpmbuild -ba jason-boost.spec --without python3 --without mpich --without openmpi
关于c++ - 如何在 RHEL 上为新的 Boost 版本构建/部署 RPM?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25879840/
我是一名优秀的程序员,十分优秀!