- 论坛徽章:
- 0
|
本帖最后由 zeissoctopus 于 2013-09-16 18:13 编辑
回复 1# BlueSky_Yu84
1、 为什么BSD要通过Linux兼容层,来运行大部分的Linux程序?
Linux 程序執行檔是呼叫 Linux 核心 API 服務,它必需透過 FreeBSD 的 Linux 兼容層作為中介在執行時即時翻譯 Linux API 為 FreeBSD API。
2、以前好像读到过,关于UNIX和Linux选择文件格式的问题,是这个原因吗?
執行檔格式只是原因之一、還有核心 API 不同、C 函式庫支援標準不同 ... 等等。
3、BSD运行GNU程序都是通过兼容层来运行的吗?
不是!
樓主要弄清楚,GNU 不是 Linux 專屬的,GNU 東西大部份都是跨平台的
FreeBSD base 裡的 GNU 程序是倚賴 /usr/src/gnu/lib
FreeBSD ports 裡的 GNU 程序是倚賴 /usr/ports/devel/glib20
以上皆沒有涉及 FreeBSD 的 Linux 兼容層。
4、Linux兼容层做了哪些工作?仅仅是安装一些库文件吗?知道具体是哪些库文件吗?
兼容層是做雙向即時翻譯工作:原生 Linux 程序 <--> Linux 核心服務呼叫 <--> (Linux 兼容翻譯) <--> FreeBSD 核心呼叫 <--> FreeBSD 核心
5、有没有办法开发出BSD和Linux原生、通用的程序?
1. C 語言:只遵守 POSIX 語法/函式庫。
2. 使用跨平台程序開發語言。
6、如果5不可行,怎么样以最小代价确保程序可移植呢?
当然,这里说的是C/C++程序,Perl/Python好像不存在类似的问题吧?
另外,界面上,例如Qt、GTK是不是也不存在移植问题啊?还是 说也要通过"兼容层"来运行?
Perl, Python, Ruby, Java, Qt, GTK 都是跨平台的,只要你安裝好 Linux 版和 FreeBSD 版,並遵守標準語法撰寫,便可提高可移植性。
注意,一般是 32bit 對應 32bit、64bit 對應 64bit 程序的可移植性。
另外,有没有熟悉在BSD用OpenJDK的,Oracle(Sun)JDK与OpenJDK是100%兼容吗?
是同时遵守JDK规范吗?还是OpenJDK只是实现了Sun JDK功能的一个子集?
可不可以这样理解:OpenJDK是SunJDK的试验场?
那么以OpenJDK开发的程序会不会有性能问题?
例如:OpenJDK已经出1.8了,但是Sun的1.8据说要2014年才能Release....
請自行閱讀一下:http://oblog.oat.tw/2010/02/openjdk-sun-jdk.html
最後,如果樓主對 FreeBSD 的 Linux 兼容層想了解多些,我推介樓主你追踪 Alexander Leidinger 君的文章,他是這方面的專家,當然,全是英文的。http://www.leidinger.net/blog/category/freebsd/linuxolator/ |
|