【发布时间】:2026-01-18 18:55:01
【问题描述】:
我对此有一系列问题,并希望保持简单、概念性和可以实际尝试的东西。
我的 C++ 应用程序有许多库,其中一些是 2007 年以来的第三方库,例如 boost、antlr、libxml2 等。我为它们提供了 32 位库,它们使用 -m32 标志编译。
方法问题 理想情况下,我希望能够通过在 64 位 RHEL6 操作系统上从 32 位复制来运行应用程序,但我发现它因分段错误而崩溃。需要对此进行单独分析,我尚未完成。
第二种方法是使用 -m32 使用所有 32 位库和 32 位编译器 g++ 3.4.6 在 64 位上编译应用程序。这编译好了。但是我遇到了 boost 多线程库的分段错误。需要对原因进行更多调查。
第三种方法非常困难,因为我需要找到一些旧库的源代码也将在 64 位上重新编译为 64 位应用程序。
还有其他我可以采用的方法吗?我的方法中是否遗漏了什么?
【问题讨论】:
-
把它扔进垃圾箱......我在开玩笑......说真的,我希望你能得到答案
-
当然。这项工作是非技术性的,所以我认为不需要你和我:)
-
简单,在 64 位主机的 32 位 docker 容器中运行它。
-
您可以分享任何链接,其中包含更多详细信息?并且复制二进制文件和 .so 是否可以使其运行?虽然它可以解决它的运行时间,但它不会解决它的维护紧急更改。问题是我需要停用 32 位和 RHEL4。在 RHEL4 之后,我们在任何其他 Linux 平台上都没有 32 位。
-
安装 docker - docs.docker.com/engine/installation/linux。如果您只想复制二进制文件 .so,则需要确切版本的 docker 映像,这将很难找到。可能你需要用github.com/docker/docker/blob/master/contrib/mkimage-yum.sh 构建类似的东西