【问题标题】:Is it possible to use shared object libraries of ubuntu in FreeBSD?是否可以在 FreeBSD 中使用 ubuntu 的共享对象库?
【发布时间】:2014-12-02 14:02:04
【问题描述】:

我在ubuntu 12.04 上开发了一个语言为C 的项目,并且我有一些共享对象库(.so 文件)。现在我想在freeBSD 8.3 OS 上使用这些库。这可能吗?如果不是,我该怎么做?在 freeBSD 上编译我的源文件有必要吗?

【问题讨论】:

  • 不,这是不可能的。是的,你必须在 FreeBSD 上编译你的源文件。
  • 您应该将您的项目作为免费软件发布(例如在github 上)并在 FreeBSD 上重新编译。
  • @BasileStarynkevitch:我不想公开我的代码。
  • 如果是公司代码,你应该为 FreeBSD 编译它(你应该向你的老板索取所需的计算机和工作时间资源)
  • 如果您想在 Linux 二进制文件之外发布 freebsd 二进制文件,您可以只运行 freebsd(例如在虚拟机中启动很简单)并在那里编译它,然后发布二进制文件。但是,您说您有权发布源代码,所以这是迄今为止最好的方法。

标签: c ubuntu compilation makefile freebsd


【解决方案1】:

Andras 正在谈论运行 Linux 二进制文件。您正在谈论使用 Linux 共享库(可能与在 FreeBSD 上编译的程序一起使用)。那是完全不同的事情。

在 FreeBSD 上运行一些相当有限的 Linux 二进制文件是可能的,因为 FreeBSD 内核提供了一个导出与 Linux 兼容的 shim 层的模块。但是,要完成这项工作,您必须拥有全 Linux 用户空间:您必须拥有 Linux 构建的共享库、Linux 构建的二进制文件等。请参阅https://www.freebsd.org/doc/handbook/linuxemu.html

在 FreeBSD 上编译的二进制文件不能使用在 Linux 上编译的共享库。它们有不同的 C 运行时、不同的内核系统调用等。它不起作用,就像在 Mac OSX 上使用 Linux 共享库、在 Intel 上使用 Solaris 或任何其他操作系统都不起作用一样。

【讨论】:

  • 哦!我从来没有想过,我认为他会使用 linux 二进制文件来运行 .so...在 FreeBSD 下。)但这只是猜测,超出了我的实际经验。但是,如果源可用,移植它们会更容易。
  • 感谢你们两位有用的 cmets。我读了这篇文章。我发现,通常不可能做到这一点。此外,我的二进制文件是 64 位的,绝对不支持在 freeBSD 上使用它们。
【解决方案2】:

freebsd 曾经能够运行 linux 二进制文件,并且在软件包中包含了一组 linux .so 文件。所以在某一时刻是可能的

【讨论】:

  • 你之前有没有尝试过这个问题?
  • 不,但我确实在 freebsd 上使用了我编译的 linux 程序之一。它加载了freebsd附带的linux系统.so
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 2012-11-03
  • 2011-01-16
相关资源
最近更新 更多