x64编译32位内核

来源:互联网 发布:青岛知行 骗 编辑:程序博客网 时间:2024/05/21 17:20

通过查阅资料,发现可以使用-m32来使得gcc编译32位程序(在x86_64系统上),使用-m elf_i386参数可以使得64位的ld能够兼容32位的库,但是tuxedo编译时是使用自己的一个命令,所以没有办法给他加参数,但是这个命令也是要调用gcc和ld得,所以我们可以通过修改gcc和ld来解决,也就是将上述的两个支持32位编译连接的参数默认给加上去:

将/usr/bin/gcc和/usr/bin/ld都改名为*.bin,就是改为:
/usr/bin/gcc.bin和/usr/bin/ld.bin,然后写两个脚本:
/usr/bin/gcc:
#!/bin/sh

gcc.bin -m32 $@

/usr/bin/ld:
#!/bin/sh

ld.bin -m elf_i386 $@

这样就保证调用时将需要的参数加上,然后再调用真正的参数($@表示当前命令的所有参数,也就是把传给教本的所有参数再传给真正的命令),经测试可以解决问题。

在IA64系统上,目前据我所知还不能编译32位的程序,可能是因为IA64的体系结构根本和i386的完全不同吧,不过也许为了考虑兼容性,听说Intel已经在新的Itanium2中加入了兼容32位的设计,也许未来的IA64上也可以编译32位的程序吧。不过还是像前面说的,最好是在一个平台上编译和运行相应的二进制程序,除非万不得以,因为兼容必竟要牺牲一些性能和可靠性的


其他方式:或者加上CFLAGS += -m32等

make ARCH=i386 menuconfig 
make ARCH=i386 
make ARCH=i386 modules_install 
make ARCH=i386 install 

原创粉丝点击