在Fedora 18 for Centos 6.4上交叉编译
Cross compile on Fedora 18 for Centos 6.4
我正在一个项目上工作,它使用来自c++ 11标准的类,在Fedora 18机器上,并希望将其部署在Centos 6.4服务器上。
我能够解决除了libc和libc++版本之外的所有加载器错误,它们分别是glibc2.2.11, GLIBCXX_3.4.15以及我的Fedora机器上的glibc2.2.14和至少GLIBCXX_3.4.17。
是否有可能告诉编译器编译/链接服务器版本或旧的兼容版本的库?
当我运行ldd executable时,我得到
./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和epel-6-x86_64
配置设置一个包含CentOS构建环境的chroot,而不是手动将库复制到单独的目录。
在模拟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
绑定挂载意味着我不需要在chroot中拥有GCC源代码,我可以在我的普通文件系统中使用现有的副本。有关构建GCC
的信息,请参阅http://gcc.gnu.org/wiki/InstallingGCC一旦你在chroot中安装了GCC,你就可以用它来构建你自己的程序,然后把它们打包到CentOS上。
稍后再返回到chroot目录:
mock -r fedora-19-x86_64 --shell
su - mockbuild
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 用于交叉编译和CMake的预处理器宏的单元测试
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- 无法使用 aarch64-unknown-nto-qnx7.0.0-g++-5.4.0 编译器交叉编译 QNX 平台的
- 如何使用导出的函数交叉编译 DLL
- 交叉编译:特殊的交叉编译器还是只是带有选项 -march 的 gcc?
- 交叉编译时包括外部库
- 如何交叉编译C++文件
- SFML 交叉编译 for Windows on Linux.
- 使用 cmake 交叉编译 libwebsockets
- 使用cmake交叉编译gRPC
- 为什么Qt必须从源代码构建以进行交叉编译?
- 交叉编译树莓派
- Microsoft Visual Studio 2019交叉编译CMake库 - 有效,但存在SEG错误
- Jlibfprint 交叉编译
- 在Linux上交叉编译Windows应用程序时如何链接到Winsock?
- 在 Centos 7 上交叉编译 protobuf 2.5.0 for Android
- 将 Ubuntu 交叉编译到 Centos GLIBCXX 的错误
- 在Fedora 18 for Centos 6.4上交叉编译
- 在CentOS for Windows上交叉编译c++ 11/14