32位linux程序移植到64位linux下编译问题

hacker1125 2009-06-17 10:54:21
原本在32位linux程序编译没有问题,现在因需要,要将原来的代码移植到64位的linux上编译,可是编译不过,
出现下面错误信息:
x86_64上gcc编译c代码,在/usr/sys/下的sysmcros.h报一下错误:
1,parameter name omitted;
2,extcted expression before '>>' token
...


不知道从32位C程序放到64位下还需要修改那些配置或者文件??

各位大虾帮忙,小弟项目比较急,在此拜谢各位了!
...全文
1182 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
hacker1125 2009-06-25
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 NC 的回复:]
引用 18 楼 hacker1125 的回复:
引用 17 楼 NC 的回复:

查查你的应用程序是否有有函数和sysmacros.h中定义的函数重名了。

谢谢NC,我后来检查,确实是我代码的一个宏定义开关和系统的一个宏重名了~修改后编译通过,可现在对文件操作的时候发生异常。

是否是因为64位读取和32位不一样呢?


什么异常?errno是多少?调用什么函数出的异常?
[/Quote]
谢谢你,现在都ok了。
异常是我类型强转造成的。
NC 2009-06-24
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 hacker1125 的回复:]
引用 17 楼 NC 的回复:

查查你的应用程序是否有有函数和sysmacros.h中定义的函数重名了。

谢谢NC,我后来检查,确实是我代码的一个宏定义开关和系统的一个宏重名了~修改后编译通过,可现在对文件操作的时候发生异常。

是否是因为64位读取和32位不一样呢?
[/Quote]
什么异常?errno是多少?调用什么函数出的异常?
hacker1125 2009-06-23
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 NC 的回复:]
查查你的应用程序是否有有函数和sysmacros.h中定义的函数重名了。
[/Quote]
谢谢NC,我后来检查,确实是我代码的一个宏定义开关和系统的一个宏重名了~修改后编译通过,可现在对文件操作的时候发生异常。

是否是因为64位读取和32位不一样呢?
NC 2009-06-22
  • 打赏
  • 举报
回复
查查你的应用程序是否有有函数和sysmacros.h中定义的函数重名了。
一 铭 2009-06-22
  • 打赏
  • 举报
回复
在IBM的aix上编译过,加了-m64参数
hacker1125 2009-06-22
  • 打赏
  • 举报
回复
大虾们,还未解决问题啊。。。
puheavy123 2009-06-18
  • 打赏
  • 举报
回复
32位程序移植到64位平台前的准备工作

http://www.west263.com/info/html/wangluobiancheng/qita/20080410/59488_2.html
datacode 2009-06-18
  • 打赏
  • 举报
回复
呵呵,一行代码都没有,如何分析?
hacker1125 2009-06-18
  • 打赏
  • 举报
回复
大虾帮忙啊?这样的异常是什么引起的?我没有用到sysmacros.h,而且这个是系统的。h,怎么会提示在那里错误呢?
hacker1125 2009-06-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 puheavy123 的回复:]
32位程序移植到64位平台前的准备工作

http://www.west263.com/info/html/wangluobiancheng/qita/20080410/59488_2.html
[/Quote]
看了,没有得到解决方案的信息
zhouxingyu896 2009-06-18
  • 打赏
  • 举报
回复

学习

帮顶
threeleafzerg007 2009-06-18
  • 打赏
  • 举报
回复
这要看具体的情况了

你这种貌似就是2楼大大说的 库函数的接口变化了,然后你还在用。

一般如果你在32位上对某些类型 进行长度假设的话 可能就运行Fail了。

比如long 32 64 ptr 32 64等等
hacker1125 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 linaxing 的回复:]
这个问题听起来像是某个库函数的接口变了,应该跟64位没有太大关系
[/Quote]
那在32位系统下编写的C代码,在64位上面不需要修改什么么?一样ok?
linaxing 2009-06-17
  • 打赏
  • 举报
回复
这个问题听起来像是某个库函数的接口变了,应该跟64位没有太大关系
hacker1125 2009-06-17
  • 打赏
  • 举报
回复
各位大虾帮忙啊
hacker1125 2009-06-17
  • 打赏
  • 举报
回复
各位帮忙啊。。谢谢了
hacker1125 2009-06-17
  • 打赏
  • 举报
回复
/usr/include/sys/sysmacros.h
这个不知道是用于什么的头文件?怎么会提示在那里错误呢?

帮忙分析下
hacker1125 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xhy_851221 的回复:]
貌似参数数目出了问题,查看出错的函数参数
[/Quote]
应该不是,提示错误的信息不是自己写的函数里,提示系统的。h文件。如下:

/usr/include/sys/sysmacros.h: In function ‘gnu_dev_major’:

/usr/include/sys/sysmacros.h:43: error: parameter name omitted

/usr/include/sys/sysmacros.h:45: error: expected expression before ‘>>’ token

/usr/include/sys/sysmacros.h:45: error: expected expression before ‘>>’ token

/usr/include/sys/sysmacros.h: In function ‘gnu_dev_minor’:

/usr/include/sys/sysmacros.h:49: error: parameter name omitted

/usr/include/sys/sysmacros.h:51: error: lvalue required as unary ‘&’ operand

/usr/include/sys/sysmacros.h:51: error: expected expression before ‘>>’ token

  • 打赏
  • 举报
回复
http://www.cppblog.com/tommyyan/articles/30393.html

linux 32位向64位的移植常见问题,可以看看
xhy_851221 2009-06-17
  • 打赏
  • 举报
回复
貌似参数数目出了问题,查看出错的函数参数

23,118

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧