代码之家  ›  专栏  ›  技术社区  ›  Alex F

freebsd中的linux程序

  •  2
  • Alex F  · 技术社区  · 16 年前

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

    $ ./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操作系统中构建它吗?也许有某种方法可以将可执行文件转换为freebsd识别的格式?

    4 回复  |  直到 9 年前
        1
  •  3
  •   zellio    9 年前

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

    如今,bsd附带了一个用于linux的abi(application binary接口),它可以动态地转换linux系统调用(wine的工作原理)。这将允许您在bsd系统上运行linux elf二进制文件,但性能损失很小。

    也就是说,它们不是同一个操作系统,您最好的选择是通过访问目标系统或使用交叉编译的方法为目标系统编译。

        2
  •  8
  •   Bastien Léonard    16 年前

    您可以在freebsd上运行许多linux程序,请参见 http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu.html .

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

        3
  •  3
  •   Gautham Ganapathy    16 年前

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

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

        4
  •  1
  •   qwkslvr    11 年前

    brandelf-t“Linux”应该可以工作。