冷秋风扫落叶 发表于 2012-09-23 11:59

32位系统能否编译、运行64位程序

我的是CentOS 6.0 32位操作系统,已经把内核换成64位的,我想在上面安装64位glibc,然后安装64位gcc,然后编译和运行64位应用程序。用的是rpm包
我的问题是:
1.可以在32位系统上安装64位glibc和64位gcc吗?如果不行,为什么?
2.如果可以安装,那么可以利用之前安装的64位gcc和glibc,编译和运行64位应用程序嘛?(可以再32位系统上编译出64位程序)

linux_c_py_php 发表于 2012-09-23 13:54

1,你没有64位编译器, 只能通过发行版本的RPM直接安装.
2,既然你系统是64的, 编译器和开发库也是64的, 应该是没问题的.

冷秋风扫落叶 发表于 2012-09-23 14:39

现在已经把内核换成64位的
#uname -a
Linux efw-1348206216.localdomain 2.6.32-220.el6.x86_64 #1 SMP Tue Dec 6 19:48:22 GMT 2011 x86_64 x86_64 x86_64 GNU/Linux
但是应用层的还是32位,不知道这个怎么变
# getconf LONG_BIT
32

rpm在安装时,应该要检测操作系统的类型,然后和rpm包中的申明的系统类型匹配

我试过了,在换成64位内核的32位linux上安装64位的glibc-common rpm包,安装失败
命令:rpm -ivh glibc-common-2.5-81.el5_8.4.x86_64.rpm --nodeps --force
错误信息:“package glibc-common-2.5-81.el5_8.4.x86_64 is intended for a x86_64 architecture”
回复 2# linux_c_py_php


   

linux_c_py_php 发表于 2012-09-23 15:10

母鸡, 去内核板块问问.

MMMIX 发表于 2012-09-25 15:48

回复 3# 冷秋风扫落叶


    RPM 这个问题改改 /usr/lib/rpm/rpmrc,把 x86_64 设成和 i686 兼容应该就可以了。

不过,你这个情况,还是重装个 64 位的系统更方便和保险。

VIP_fuck 发表于 2012-09-27 10:22

32的系统运行64的程序会有问题吧?
编译的话,加个编译参数应该就行吧。
大牛指教。

sickcat2004 发表于 2012-09-27 11:24

:'(:'(:'(折腾啊

MMMIX 发表于 2012-09-27 12:34

VIP_fuck 发表于 2012-09-27 10:22 static/image/common/back.gif
32的系统运行64的程序会有问题吧?
编译的话,加个编译参数应该就行吧。
大牛指教。

编译和运行都是看情况的,大部分都是没有问题的。当然,运行的话前提是你的 CPU 是 64 位的,且内核支持 64 位程序的运行。

palm008 发表于 2012-09-27 15:16

32位系统是可以编译出64位的应用程序的,
32位的系统上安装一个64位的编译器,
但是64位的应用程序是一定不能运行在32位系统上的。

MMMIX 发表于 2012-09-27 16:12

palm008 发表于 2012-09-27 15:16 static/image/common/back.gif
但是64位的应用程序是一定不能运行在32位系统上的。

这个看你怎么定义"32位系统“了。其实,只要 kernel 是 64 位的(或支持 64 位程序运行),有需要的动态库(包括 loader),就可以运行 64 位程序了。
页: [1]
查看完整版本: 32位系统能否编译、运行64位程序