免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: BlueSky_Yu84
打印 上一主题 下一主题

[FreeBSD] 如何开发BSD和Linux通用的程序??? [复制链接]

论坛徽章:
12
寅虎
日期:2013-12-04 20:37:4915-16赛季CBA联赛之广东
日期:2017-08-22 19:23:1215-16赛季CBA联赛之上海
日期:2016-06-18 23:05:05操作系统版块每日发帖之星
日期:2016-06-06 06:20:00操作系统版块每日发帖之星
日期:2016-06-05 06:20:00操作系统版块每日发帖之星
日期:2016-06-03 06:20:002015年辞旧岁徽章
日期:2015-03-03 16:54:152015年亚洲杯之巴勒斯坦
日期:2015-02-10 21:38:08卯兔
日期:2014-10-31 20:42:23申猴
日期:2014-06-11 17:15:10处女座
日期:2014-05-22 09:00:1815-16赛季CBA联赛之广夏
日期:2017-09-25 23:37:46
11 [报告]
发表于 2013-09-15 22:31 |只看该作者
BlueSky_Yu84 发表于 2013-09-15 19:10
回复 6# wait_rabbit


《Advanced Programming in the UNIX Environment 》 最新的第三版,所有的代码均在 Solaris 10, Mac OS X version 10.6.8 (Darwin 10.8.0 ), FreeBSD 8.0, and Ubuntu version 12.04 (based on Linux 3.2) 上经过测试。

你就用这本书上的接口写应用程序就行了。

论坛徽章:
29
技术图书徽章
日期:2013-09-02 19:59:502015元宵节徽章
日期:2015-03-06 15:51:332015小元宵徽章
日期:2015-03-06 15:57:20操作系统版块每日发帖之星
日期:2015-08-16 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17操作系统版块每日发帖之星
日期:2015-09-21 06:20:002015亚冠之水原三星
日期:2015-10-30 00:06:07数据库技术版块每日发帖之星
日期:2015-12-24 06:20:0015-16赛季CBA联赛之上海
日期:2016-01-07 10:32:07操作系统版块每日发帖之星
日期:2016-01-08 06:20:00操作系统版块每日发帖之星
日期:2016-05-18 06:20:00IT运维版块每日发帖之星
日期:2016-07-23 06:20:00
12 [报告]
发表于 2013-09-15 23:28 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
13 [报告]
发表于 2013-09-16 03:03 |只看该作者
回复 12# Hongqiyaodao


    大哥,不麻烦您了,您回答的不是我想问的问题,别在这抬杠了

论坛徽章:
0
14 [报告]
发表于 2013-09-16 18:08 |只看该作者
本帖最后由 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/

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
15 [报告]
发表于 2013-09-16 19:31 |只看该作者
FreeBSD提供了Linux的仿真层,提供了对应的Linux的ABI。所以一些Linux程序可以直接运行在这个环境中。API和ABI是不同的。诸如POSIX就是API的一个标准定义,只要支持了POSIX相关标准,相应的程序,都可以在其上编译并运行。FreeBSD7的二进制程序可以运行在FreeBSD8上,说明2个OS的ABI是相同的。而FreeBSD4的程序是无法运行在FreeBSD7上的,说明他们的ABI是不同的了。每类OS,甚至不同的版本,都可能会定义出不同的API,C程序想要通用,只能条件编译做移植。

论坛徽章:
2
技术图书徽章
日期:2013-09-04 15:21:51酉鸡
日期:2013-11-01 21:20:20
16 [报告]
发表于 2013-09-16 19:41 |只看该作者
诸如Perl/Python之类的,从计算机体系结构上讲,这个层面上程序员看到的是由相应的语言解释器“模拟出来的计算机”。所以只要这个语言解释器能够在相应系统上运行,就不存在问题。但诸如Java,如果使用了JNI,可能会产生移植问题。

论坛徽章:
89
水瓶座
日期:2014-04-01 08:53:31天蝎座
日期:2014-04-01 08:53:53天秤座
日期:2014-04-01 08:54:02射手座
日期:2014-04-01 08:54:15子鼠
日期:2014-04-01 08:55:35辰龙
日期:2014-04-01 08:56:36未羊
日期:2014-04-01 08:56:27戌狗
日期:2014-04-01 08:56:13亥猪
日期:2014-04-01 08:56:02亥猪
日期:2014-04-08 08:38:58程序设计版块每日发帖之星
日期:2016-01-05 06:20:00程序设计版块每日发帖之星
日期:2016-01-07 06:20:00
17 [报告]
发表于 2013-09-16 20:58 |只看该作者
zeissoctopus 和 mirnshi 说的都很好。

论坛徽章:
0
18 [报告]
发表于 2013-09-17 08:51 |只看该作者
fender0107401 发表于 2013-09-16 20:58
zeissoctopus 和 mirnshi 说的都很好。


mirnshi 君寫的最精確,樓主應該得到想要答案

论坛徽章:
0
19 [报告]
发表于 2013-09-20 07:40 |只看该作者
回复 1# BlueSky_Yu84


    有个标准叫posix bsd和linux都兼容这些api,基本的开发库libc也兼容
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP