FreeBSD中的L​​inux程序

时间:2010-03-24 09:06:58

标签: linux build freebsd

尝试在FreeBSD OS中运行我的程序,我得到以下结果:

$ ./myprogram

ELF binary type "0" not known

./myprogram: 1: Syntax error: "&" unexpected (expecting ")")

$ file myprogram

myprogram: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 

dynamically linked (uses shared libs), for GNU/Linux 2.6.15, 

not stripped

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

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:3)

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

目前,BSD附带了一个用于Linux的ABI(应用程序二进制接口),它将动态转换Linux系统调用(WINE如何操作)。这将允许您在BSD系统上运行Linux ELF二进制文件,性能损失很小。

话虽如此,它们并不是相同的操作系统,您最好的选择是通过获取访问权限或使用交叉编译方法来编译目标系统。

答案 2 :(得分:3)

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

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

答案 3 :(得分:1)

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