免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(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
2 [报告]
发表于 2006-04-26 11:39 |只看该作者
是不是-no-align-double仅仅支持intel ?在solaris上怎么没有这选项?
如何处理呢?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
3 [报告]
发表于 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
4 [报告]
发表于 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
5 [报告]
发表于 2006-04-26 20:35 |只看该作者
原帖由 柳五随风 于 2006-4-26 20:30 发表

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

在命令行上不行吗?

论坛徽章:
0
6 [报告]
发表于 2006-04-27 09:23 |只看该作者
原帖由 lenovo 于 2006-4-26 20:35 发表

在命令行上不行吗?

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

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
7 [报告]
发表于 2006-04-27 09:31 |只看该作者
原帖由 柳五随风 于 2006-4-27 09:23 发表

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

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

论坛徽章:
0
8 [报告]
发表于 2006-04-27 10:01 |只看该作者
gcc 3.3.2
你确认在Sun OS 5.8上有这两个选项?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 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
10 [报告]
发表于 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字节对齐,最好能讲讲为什么。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP