gpt4 book ai didi

c++ - 在 Fedora 18 上交叉编译 Centos 6.4

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:14 24 4
gpt4 key购买 nike

我正在 Fedora 18 机器上开发一个使用 C++11 标准类的项目,我想将它部署在 Centos 6.4 服务器上。

我能够解决除 libc 和 libc++ 版本之外的所有加载程序错误,它们分别是 GLIBC_2.11、GLIBCXX_3.4.15 以及在我的 Fedora 机器上 GLIBC_2.14 和至少 GLIBCXX_3.4.17。

是否可以告诉编译器为服务器版本或库的旧兼容版本编译/链接?

当我运行ldd可执行文件时,我得到了

./executable: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./executable)
./executable: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by ./executable)

提前致谢!

最佳答案

您可以使用 mock 设置一个包含 CentOS 构建环境的 chroot,而不是手动将库复制到一个单独的目录。和 epel-6-x86_64 配置。

在模拟 chroot 中使用 yum 来安装您想要的软件包(例如 Qt)并在那里构建,这将确保代码只使用安装在 chroot 中的 CentOS 6 库,而不是Fedora OS 上的其余软件包。

更新:

当我使用模拟 chroot 构建 GCC 时,我会这样做:

# only need these steps once to setup the chroot
mock -r fedora-19-x86_64 --init
mock -r fedora-19-x86_64 --install yum
mock -r fedora-19-x86_64 --shell 'mkdir -p /builddir/gcc/src /builddir/gcc/build'
su -c 'mount --bind $PATH_TO_GCC_SOURCES /var/lib/mock/fedora-19-x86_64/root/builddir/gcc/src'
# enter root password
mock -r fedora-19-x86_64 --shell
# now in chroot
yum install gmp-devel mpfr-devel libmpc-devel flex autogen
su - mockbuild
cd gcc/build
../src/configure --prefix=/builddir/gcc/install ... etc. ...

为了您的目的,您需要将 fedora-19 替换为 epel-6

绑定(bind)挂载意味着我不需要在 chroot 中有 GCC 源代码,我可以在我的普通文件系统中使用现有的拷贝。参见 http://gcc.gnu.org/wiki/InstallingGCC有关构建 GCC 的信息

一旦您在 chroot 中安装了 GCC,您就可以使用它来构建您自己的程序,然后将它们打包用于 CentOS。

稍后再次回到 chroot:

mock -r fedora-19-x86_64 --shell
su - mockbuild

关于c++ - 在 Fedora 18 上交叉编译 Centos 6.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16543223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com