如何为64位平台编译32位apache模块?

时间:2009-07-17 21:15:38

标签: apache 64-bit compilation

我正在尝试在mac os x 10.5.7上为apache补充mod_auth_kerb。我没有编译错误,但是当apache尝试加载它时:

org.apache.httpd [95092]:httpd:/private/etc/apache2/httpd.conf第160行的语法错误:无法将/usr/libexec/apache2/mod_auth_kerb.so加载到服务器:dlopen(/ usr) /libexec/apache2/mod_auth_kerb.so,10):找不到合适的图像。找到了:\ n \ t / usr / libexec / apache2 / mod_auth_kerb.so:mach-o,但架构错误

我在make文件中尝试了以下内容:

ARCHFLAGS =' - arch ppc64' CPPFLAGS = -I。 -Ispnegokrb5 $(KRB5_CPPFLAGS)$(KRB4_CPPFLAGS)$(DEFS)-mpowerpc64 -mcpu = G5 -mtune = G5 -arch ppc64 LDFLAGS = $(KRB5_LDFLAGS)$(KRB4_LDFLAGS)$(LIB_resolv)-mpowerpc64 -mcpu = G5 -mtune = G5 -arch ppc64 CFLAGS = -mpowerpc64 -mcpu = G5 -mtune = G5 -arch ppc64

我查看了这些主题:

http://lists.apple.com/archives/unix-porting/2008/Mar/msg00061.html

http://objectmix.com/apache/690208-re-mod_auth_kerb-mac-os-x-10-5-client.html

我也在源代码中改变了这一点:

这   krb5_rc_resolve_full
至    __KerberosInternal_krb5_rc_resolve_full

我无法获得apache加载它并声称它是错误的架构。我认为apache在这个版本的mac服务器中是64位的,所以这可能就是问题所在。我只是不知道如何度过难关。

第160行是httpd.conf文件中的红色鲱鱼(它有##)。

我不知道如何正确编译它并希望得到帮助。

我有一台G5 PPC 64。

谢谢。

编辑:

奇怪的是:

otool -hv mod_auth_kerb.so mod_auth_kerb.so:Mach header magic cputype cpusubtype caps filetype ncmds sizeofcmds flags

MH_MAGIC_64 PPC64 ALL 0x00 BUNDLE 10 1328 NOUNDEFS DYLDLINK TWOLEVEL

所以我不知道出了什么问题。

我在PPC64上,这就是我编译的样子。

1 个答案:

答案 0 :(得分:1)

如果我正确地关注了这个问题,我认为你需要构建/安装一个交叉编译工具链来构建它从PPC到x86_64或其他非PPC架构,甚至在某些情况下, PPC到PPC64,反之亦然

如果您不熟悉GCC,Unix工具链和Darwin基础知识,我不会建议这样做。

您可以在网上找到Darwin工具链设置。一些正确方向的链接:

  1. http://lists.apple.com/archives/darwin-development/2002/Dec/msg00062.html
  2. http://ranger.befunk.com/fink/darwin-cross/
  3. http://myownlittleworld.com/miscellaneous/computers/darwin-cross-distcc.html
  4. http://www.google.com/search?q=Darwin+cross+compilation