将 C++ 程序从 Solaris 迁移到 Linux 时的动态链接

将 C++ 程序从 Solaris 迁移到 Linux 时的动态链接

问题

我正在尝试将遗留应用程序的构建过程从较旧的 Solaris 计算机迁移到 Linux,特别是 RHEL 7.7。该应用程序最初是使用 Solaris Studio(现在称为 Oracle Developer Studio)构建的。在安装了尽可能多的依赖项并调整编译标志后,我能够将代码编译成各种可执行文件。

当我尝试从命令行运行其中之一时,我得到以下信息:

$ ./myexecutable
bash: /path/to/my/myexecutable: /usr/lib/amd64/ld.so.1: bad ELF interpreter: No such file or directory

我的尝试

看起来它正在寻找旧的动态链接器,它支持链接存档文件(也称为.a文件)。通过符号链接使用ld-linux.so.2会产生一条错误消息,指出库已损坏。

$ ./myexecutable
bash: /path/to/my/myexecutable: Accessing a corrupted shared library

我也发现了/usr/share/man/man8/ld.so.8.gz。我将其解压缩并创建了一个符号链接,/usr/lib/amd64/ld.so.1但这产生了与上面相同的错误。

使用yum whatprovides我找不到任何提供ld.so.1.我唯一能想到做的另一件事就是追踪该版本glibc的源代码ld.so.1并尝试对其进行编译。

如果您知道如何使用ld.so.1RHEL 7.x (AMD64) 或某种允许我在不使用该共享库的情况下运行我的程序的解决方法,请告诉我。

相关内容