当前位置:  开发笔记 > 运维 > 正文

你能在64位机器上编译32位Apache DSO(Oracle HTTP Server)吗?

如何解决《你能在64位机器上编译32位ApacheDSO(OracleHTTPServer)吗?》经验,为你挑选了1个好方法。

我已将Oracle数据库和Oracle HTTP服务器安装从32位计算机迁移到64位计算机 - 两台运行Linux的计算机.Oracle数据库是64位,但(Apache)HTTP服务器是32位.

我使用了一些非Oracle DSO(mod_ntlm为一个),但每当我运行标准的"make install"类型的东西时,我最终得到一个64位模块.

是否有一种在64位计算机上编译32位Apache模块的标准方法?



1> Jonathan Lef..:

作为Andrew Medico的答案的替代方案,在PPC或SPARC或Intel机器上使用' -m32'进行32位编译和' -m64'进行64位编译 - 因为您实际上没有提到您正在使用的芯片架构,并且符号可用于所有这些.

我经常使用:

CC="gcc -m32" ./configure

确保32位编译(或更常见的CC="gcc -m64"是确保64位编译).


问题:"CC是否是make使用的环境变量?"

答:是的,虽然在这种情况下,它也被识别configure,这是一个由...生成的shell脚本autoconf.我使用的符号 - 我在命令行中使用的符号 - 在configure命令运行时在环境中设置CC .另一个答案建议使用:

./configure CC="gcc -m32"

我认为它起作用并取得了同样的效果; 我没试过,所以我不知道它有效.

如果运行./configure --help | less,您将看到有关如何使用脚本的信息(通常只是标准信息).最后,它将列出(一些)相关的环境变量,其中CC是一个.

将C编译器设置为"gcc -m32"的优点是每次使用编译器时都会设置32位标志 - 它几乎没有出错的余地.如果你设置一个标志变量(CFLAGS等),有些命令可能不会使用它,然后事情就会出错.

此外,回到问题,make肯定使用一个名为CC的变量(宏).你可以在make命令行上设置它:

make CC="gcc -m32"

这会覆盖makefile中的任何设置.相反,使用环境变量时,makefile中的设置会覆盖环境中的值,因此将CC设置为环境变量的帮助较小.尽管make -e使环境优先于makefile,但它通常是一个危险的选择 - 它可能会产生意想不到的副作用.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有