我已将Oracle数据库和Oracle HTTP服务器安装从32位计算机迁移到64位计算机 - 两台运行Linux的计算机.Oracle数据库是64位,但(Apache)HTTP服务器是32位.
我使用了一些非Oracle DSO(mod_ntlm为一个),但每当我运行标准的"make install"类型的东西时,我最终得到一个64位模块.
是否有一种在64位计算机上编译32位Apache模块的标准方法?
作为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,但它通常是一个危险的选择 - 它可能会产生意想不到的副作用.