2

尝试在 FreeBSD 操作系统中运行我的程序,我得到以下结果:

$ ./我的程序

ELF 二进制类型“0”未知

./myprogram: 1: 语法错误:“&”意外(预期“)”)

$文件我的程序

myprogram:ELF 32 位 LSB 可执行文件,Intel 80386,版本 1 (SYSV),

动态链接(使用共享库),对于 GNU/Linux 2.6.15,

未剥离

该程序内置在 Ubuntu 计算机上的 GCC 中。我能做些什么?我可以通过更改一些构建选项在我的 Ubuntu 计算机上构建 FreeBSD 程序,还是需要在 FreeBSD 操作系统中构建它?也许有一些方法可以将可执行文件转换为 FreeBSD 识别的格式?

4

4 回答 4

8

你可以在 FreeBSD 上运行很多 Linux 程序,参见http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu.html

如果这不起作用,最简单的解决方案是在 FreeBSD 上重新编译您的程序。

于 2010-03-24T09:09:00.847 回答
3

尝试使用brandelf将可执行文件标记为linux可执行文件(尽管您仍然需要设置所有依赖库,或者尝试静态链接它

http://www.freebsd.org/cgi/man.cgi?query=brandelf&apropos=0&sektion=0&manpath=FreeBSD+8.0-RELEASE&format=html

于 2010-04-23T11:02:10.183 回答
2

2021-06-21:这个答案已经过时了。截至 2021 年,FreeBSD 包括Linux® 二进制兼容性,它将运行大多数 Linux 二进制文件,除了那些“过度使用 i386™ 特定调用,以启用虚拟 8086 模式”的二进制文件。


大量的 Linux 程序可以在 BSD 系统上编译,但它们不是同一个操作系统。Linux 和 BSD 在技术上不是二进制兼容的。

如今,BSD 为 Linux 提供了一个 ABI(应用程序二进制接口),它将即时翻译 Linux 系统调用(与 WINE 的操作方式类似)。这将允许您在 BSD 系统上以较小的性能损失运行 Linux ELF 二进制文件。

话虽如此,它们不是同一个操作系统,最好的办法是通过访问目标系统或使用交叉编译方法来编译目标系统。

于 2010-03-24T09:11:29.157 回答
1

brandelf -t "Linux" 它应该可以工作。

于 2015-02-28T06:16:59.240 回答