免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2793 | 回复: 19

gcc 在solaris上的问题 [复制链接]

论坛徽章:
0
发表于 2006-04-26 09:19 |显示全部楼层
因为我有一个第三方的lib是用solaris CC编译的(Sun OS 5.,而应用部分使用gcc 3.3.2编译的,存在一个问题:double alignment,即gcc对double数据缺省是8字节对齐的,而CC是4字节对齐的。
我的问题是如何设置gcc参数,使其能对double以4bytes方式对齐。
多谢

论坛徽章:
0
发表于 2006-04-26 11:39 |显示全部楼层
是不是-no-align-double仅仅支持intel ?在solaris上怎么没有这选项?
如何处理呢?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2006-04-26 14:50 |显示全部楼层
-mno-unaligned-doubles
-munaligned-doubles
    Assume that doubles have 8 byte alignment. This is the default.

    With -munaligned-doubles, GCC assumes that doubles have 8 byte alignment only if they are contained in another type, or if they have an absolute address. Otherwise, it assumes they have 4 byte alignment. Specifying this option avoids some rare compatibility problems with code generated by other compilers. It is not the default because it results in a performance loss, especially for floating point code.

不知道这是不是你需要的。

论坛徽章:
0
发表于 2006-04-26 20:30 |显示全部楼层
原帖由 lenovo 于 2006-4-26 14:50 发表
-mno-unaligned-doubles
-munaligned-doubles
    Assume that doubles have 8 byte alignment. This is the default.

    With -munaligned-doubles, GCC assumes that doubles have 8 byte alignment only ...

谢谢,我现在需要知道如何在solaris上使用这个开关。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2006-04-26 20:35 |显示全部楼层
原帖由 柳五随风 于 2006-4-26 20:30 发表

谢谢,我现在需要知道如何在solaris上使用这个开关。

在命令行上不行吗?

论坛徽章:
0
发表于 2006-04-27 09:23 |显示全部楼层
原帖由 lenovo 于 2006-4-26 20:35 发表

在命令行上不行吗?

查了一下,gcc on solaris没有这个编译开关。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2006-04-27 09:31 |显示全部楼层
原帖由 柳五随风 于 2006-4-27 09:23 发表

查了一下,gcc on solaris没有这个编译开关。

你的gcc版本是多少?
我给的那个是最新的4.1.0。
还有,你试了这两个选项没有?

论坛徽章:
0
发表于 2006-04-27 10:01 |显示全部楼层
gcc 3.3.2
你确认在Sun OS 5.8上有这两个选项?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2006-04-27 10:14 |显示全部楼层
原帖由 柳五随风 于 2006-4-27 10:01 发表
gcc 3.3.2
你确认在Sun OS 5.8上有这两个选项?

这两个选项和OS版本无关,是gcc编译器为SPARC机器提供的。
gcc 3.3.2的手册我没有,无法得知它是不是也有这两个。不过我猜测应该有。
还有能不能用,测试一下就知道了,测试一下就那么困难?
我不明白你问来问去想知道什么。
如果不行,那就说明我给的不适用你。

论坛徽章:
0
发表于 2006-04-27 10:37 |显示全部楼层
原帖由 lenovo 于 2006-4-27 10:14 发表

这两个选项和OS版本无关,是gcc编译器为SPARC机器提供的。
gcc 3.3.2的手册我没有,无法得知它是不是也有这两个。不过我猜测应该有。
还有能不能用,测试一下就知道了,测试一下就那么困难?
我不明白你问来 ...


我测试过了,任何时候证明可以总是很容易,证明不可以总很难。另外这两个switches为什么在solaris上没有提供才是问题的根本。
现在明白我问什么了么?简单说就是有人能明确的说sun上的gcc针对double/long double/long long不提供4字节对齐,最好能讲讲为什么。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时9.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP