Phi*_*ard 2 c++ fedora cross-compiling c++11 centos6
我正在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)
Run Code Online (Sandbox Code Playgroud)
提前致谢!
除了手动将库复制到单独的目录外,您还可以使用模拟和epel-6-x86_64配置来设置包含CentOS构建环境的chroot 。
使用yum了模拟的chroot安装所需要的软件包(如QT)和建立那里,这将保证代码只使用CentOS 6个的库被安装在chroot,而不是在你的Fedora操作系统包的其余部分。
更新:
当我使用模拟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. ...
Run Code Online (Sandbox Code Playgroud)
为了您的目的,您将替换fedora-19为epel-6
绑定安装意味着我不需要在chroot中拥有GCC源,我可以在普通文件系统中使用现有副本。有关构建GCC的信息,请参见http://gcc.gnu.org/wiki/InstallingGCC
在chroot中安装GCC后,您可以使用它来构建自己的程序,然后将它们打包为CentOS。
要稍后再次进入chroot:
mock -r fedora-19-x86_64 --shell
su - mockbuild
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2163 次 |
| 最近记录: |