求助大神,linux 编译的问题,

desert734 2017-03-20 11:53:02
我有2个平台A(64位) , B(32位),但是只想在平台A上编译,
在A上装有B 的develop路径(其实不是安装的rpm包,是从编译服务器上拷贝的make 路径,
我在编译某个驱动模块的时候, makefile这样的:

ifeq ($(ver),3.18)
KDIR:=/home/3.18.19.build/ //这是平台B编译后的路径, (arch、block ... 等文件文件)
else
KDIR:=/lib/modules/$(shell uname -r)/build/ //只是我本地安装的develop包

这样可以编译2个平台使用的ko文件,

但是我如果要编译用户态文件,比如一个hello word文件,直接用gcc编译出来是无法到B(32位)上使用的,有没有什么办法呢???
...全文
757 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
小陆zi 2017-05-17
  • 打赏
  • 举报
回复
和平台没有多大关系,64为的平台你可以装32位 的交叉编译工具 然后编译出可以运行在32位的代码,可以使用file 检查一下这个文件的文件属性,是否是32位的
常书 2017-05-17
  • 打赏
  • 举报
回复
同意楼上,楼主要用32位的GCC才能在B机子上运行,用默认的是64位的
twintiger 2017-04-07
  • 打赏
  • 举报
回复
不好意思,看错你的问题了。 编译用户程序你试试: 1、$CC -o hello hello.c $CC是环境变量,一般是交叉编译器,如果是内核编译可以的话,应该可以。 如果你的内核的Makefile里面定义的编译器,你可以grep CC /home/3.18.19.build/Makefile,看它用的什么编译器和路径,你用同样的编译器即可。
twintiger 2017-04-07
  • 打赏
  • 举报
回复
我遇到过同样的问题,对方是64位虚拟机编译的内核,我在32位虚拟机下同样的编译器,同样的内核源码,同样的.config, 编译出来的ko无法加载。后来装了在一个新的虚拟机里装了64位的Ubuntu搞定的,貌似没有太好的办法。

4,441

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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