在较旧的 FreeBSD 中运行静态可执行文件时出现奇怪的行为

在较旧的 FreeBSD 中运行静态可执行文件时出现奇怪的行为

我确实在 FreeBSD 12 中静态编译了一个 cmake 项目,当我尝试它时ldd executable,它返回not a dynamic executable.我在同一台计算机上尝试了可执行文件,它工作正常。然后我将其移植到我的拥有 FreeBSD 12 的 vps 上,并且它按预期工作。但是当我将它移植到 FreeBSD 8 时。一些命令可以工作,例如executable --help打印帮助。但是当我尝试一些涉及网络的功能(网络已配置,我尝试了各种程序,如curl和php)时,该进程默默退出,没有分段错误或任何其他情况,并且在运行可执行文件后,一些其他文件名executable.core被添加到同一目录中

这是我第一次编译 FreeBSD 版本,所以我不知道我错过了什么

答案1

FreeBSD 12 进行了严重的 ABI 更改,称为“ino64”。 IIRC,libc 可以在动态链接时处理这个问题,所以我首先尝试一下。如果这不起作用,您唯一的选择是在 FreeBSD 8 上进行编译。

一般来说,您不应期望在 X 主要版本上编译的二进制文件能够在 X-1 版本上运行。但它通过安装misc/compatXX软件包来实现另一种方式。

相关内容