免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1509 | 回复: 3
打印 上一主题 下一主题

请教Linux编程中的平台兼容性问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-05-03 12:54 |只看该作者 |倒序浏览
我们的服务器都是小端法(little-endian)的AMDstructure,就是多字节的数据类型中,低地址表示低位。但是别人有些服务器是采用大端法的(big endian)。

把我编译出来的Linux程序拿到大端法机器上,首先我知道肯定不会正确运行。
但是我现在想问,它到底能不能跑起来呢?

另外,我的环境中数据类型大小是:
short        2 bytes
int        4 bytes
long        8 bytes

会不会有些Linux平台的这些数据类型大小和我们的不一样?如果不一样,程序会不会跑起来呢?

如果上述方面不兼容的平台都跑不起来,那固然好。但是我不确信这一点,所以我在程序中对大小端和数据大小都做了监测。如果和我的还境不兼容,程序就退出。

请问,这样能否保证凡是运行起来的还境都和我的还境得到一样的结果?

谢谢。

论坛徽章:
0
2 [报告]
发表于 2012-05-03 20:00 |只看该作者
abi兼容的情况下,程序才有可能不用重新编译,直接跑。大小端不一样的机器,显然不可能。

而且x86的机器都是小端。大端的机器,难道是powerpc?那连指令集都不样,不重新编译能跑起来就怪了。就算是同为mips架构,mips(大端)上编出来的程序在mipsel(小端)上也跑不起来啊。

论坛徽章:
0
3 [报告]
发表于 2012-05-03 21:55 |只看该作者
那么请问,我系统中的数据大小 (short 2, int 4, long 是固定死在我的程序中的呢,还是由平台和环境决定的呢?
如果我的程序在另外一台小端机上能跑起来,是不是各种数据类型的空间大小也肯定和在我这里运行的一样呢?

论坛徽章:
0
4 [报告]
发表于 2012-05-03 21:58 |只看该作者
不好意思,我打的 long 8 右括号自动变成long和笑脸了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP