我很好奇FreeBSD的Linux兼容层机制,并在下面得到了一些信息。 https://en.wikipedia.org/wiki/FreeBSD#Compatibility_layers_with_other_operating_systems https://unix.stackexchange.com/questions/172038/what-allows-bsd-to-run-linux-binaries-but-not-vice-versa
两个操作系统之间的关键区别是系统调用的差异。 而且,我知道Linux应用程序和BSD应用程序依赖于不同的标准动态库(例如linux-gate.so.1)。
实施中还有其他内容吗?
答案 0 :(得分:3)
能够在FreeBSD中运行Linux应用程序的方法是多方面的。
据我所知,策略的各个部分如下:
Linux应用程序调用Linux库,这些库调用Linuxolator的Linux系统调用,调用FreeBSD系统调用。
答案 1 :(得分:2)
某些功能在Linux上可用(udev
,systemd,inotify(7),...)但在FreeBSD上没有(反之亦然)。
某些系统调用具有不同的标志。 FreeBSD mmap(2)与Linux mmap(2)等不完全相同......
两者都是Unix系统,但是细节就是魔鬼。
如果您想在C中为两个操作系统编写应用程序,请尽量遵循POSIX。