Macos 在OS X下将ImageMagick编译为64位?

Macos 在OS X下将ImageMagick编译为64位?,macos,makefile,imagemagick,compilation,configure,Macos,Makefile,Imagemagick,Compilation,Configure,我正在尝试在OS X(请参阅)上安装,这是一个依赖于ImageMagick的Apache模块 据我所知,OS X Apache编译为64位。我之前尝试运行我编译的moddims模块时出现以下错误: httpd: Syntax error on line 117 of /private/etc/apache2/httpd.conf: Cannot load /usr/libexec/apache2/libmod_dims.so into server: dlopen(/usr/libexec/

我正在尝试在OS X(请参阅)上安装,这是一个依赖于ImageMagick的Apache模块

据我所知,OS X Apache编译为64位。我之前尝试运行我编译的moddims模块时出现以下错误:

httpd: Syntax error on line 117 of /private/etc/apache2/httpd.conf: 
Cannot load /usr/libexec/apache2/libmod_dims.so into server: 
dlopen(/usr/libexec/apache2/libmod_dims.so, 10): no suitable image found.  
Did find:\n\t/usr/libexec/apache2/libmod_dims.so: mach-o, but wrong architecture
我想这意味着我需要将moddims编译为64位。。。因此,我尝试了以下方法:

moddims-read-only simon$ ./configure CFLAGS='-arch x86_64' \
    APXSLDFLAGS='-arch x86_64' --with-curl=/usr/local/bin/ \
    --with-imagemagick=/opt/ImageMagick-6.3.9/
ImageMagick-6.3.9 simon$ ./configure --prefix=/opt/ImageMagick-6.3.9/ \
    --exec-prefix=/opt/ImageMagick-6.3.9/ CFLAGS='-arch x86_64' \
    APXSLDFLAGS='-arch x86_64'
但这给了我一个错误:

checking for MagickWandGenesis in -lMagickWand... no
checking for MagickWandGenesis in -lWand... no
configure: error: ImageMagick not found.
/bin/sh ./libtool --silent --tag=CC   --mode=link gcc  -arch x86_64 -Wall -W -D_THREAD_SAFE -module -avoid-version -L/usr/X11/lib -R/usr/X11/lib -L/opt/local/lib -lfreetype -lz -o ltdl/dlopen.la  ltdl/loaders/dlopen.lo  
/bin/sh ./libtool --silent --tag=CC   --mode=link gcc  -arch x86_64 -Wall -W -D_THREAD_SAFE -no-undefined -dlpreopen ltdl/dlopen.la  -L/usr/X11/lib -R/usr/X11/lib -L/opt/local/lib -lfreetype -lz -o ltdl/libltdlc.la  ltdl/loaders/ltdl_libltdlc_la-preopen.lo ltdl/ltdl_libltdlc_la-lt__alloc.lo ltdl/ltdl_libltdlc_la-lt_dlloader.lo ltdl/ltdl_libltdlc_la-lt_error.lo ltdl/ltdl_libltdlc_la-ltdl.lo ltdl/ltdl_libltdlc_la-slist.lo ltdl/argz.lo 
ranlib: archive member: ltdl/.libs/libltdlc.a(argz.o) cputype (7) does not match previous archive members cputype (16777223) (all members must match)
ranlib: archive member: ltdl/.libs/libltdlc.a(argz.o) cputype (7) does not match previous archive members cputype (16777223) (all members must match)
make[1]: *** [ltdl/libltdlc.la] Error 1
make: *** [all] Error 2
以前,在没有CFLAGS 64位的情况下编译时,这种方法工作得很好

所以。。。我猜这意味着我需要将ImageMagick编译为64位。我尝试了以下方法:

moddims-read-only simon$ ./configure CFLAGS='-arch x86_64' \
    APXSLDFLAGS='-arch x86_64' --with-curl=/usr/local/bin/ \
    --with-imagemagick=/opt/ImageMagick-6.3.9/
ImageMagick-6.3.9 simon$ ./configure --prefix=/opt/ImageMagick-6.3.9/ \
    --exec-prefix=/opt/ImageMagick-6.3.9/ CFLAGS='-arch x86_64' \
    APXSLDFLAGS='-arch x86_64'
该./configure命令运行良好,但当我运行
make
时,它会愉快地运行一段时间,然后由于以下错误而消失:

checking for MagickWandGenesis in -lMagickWand... no
checking for MagickWandGenesis in -lWand... no
configure: error: ImageMagick not found.
/bin/sh ./libtool --silent --tag=CC   --mode=link gcc  -arch x86_64 -Wall -W -D_THREAD_SAFE -module -avoid-version -L/usr/X11/lib -R/usr/X11/lib -L/opt/local/lib -lfreetype -lz -o ltdl/dlopen.la  ltdl/loaders/dlopen.lo  
/bin/sh ./libtool --silent --tag=CC   --mode=link gcc  -arch x86_64 -Wall -W -D_THREAD_SAFE -no-undefined -dlpreopen ltdl/dlopen.la  -L/usr/X11/lib -R/usr/X11/lib -L/opt/local/lib -lfreetype -lz -o ltdl/libltdlc.la  ltdl/loaders/ltdl_libltdlc_la-preopen.lo ltdl/ltdl_libltdlc_la-lt__alloc.lo ltdl/ltdl_libltdlc_la-lt_dlloader.lo ltdl/ltdl_libltdlc_la-lt_error.lo ltdl/ltdl_libltdlc_la-ltdl.lo ltdl/ltdl_libltdlc_la-slist.lo ltdl/argz.lo 
ranlib: archive member: ltdl/.libs/libltdlc.a(argz.o) cputype (7) does not match previous archive members cputype (16777223) (all members must match)
ranlib: archive member: ltdl/.libs/libltdlc.a(argz.o) cputype (7) does not match previous archive members cputype (16777223) (all members must match)
make[1]: *** [ltdl/libltdlc.la] Error 1
make: *** [all] Error 2

我已经读到了我的深度,但现在我完全被卡住了!有什么想法吗?

我确保编译64位(或32位,比照)的一般技巧是:

<>这个处理C编译器(添加<代码> cxx =“g++-M64”< /C> >如果你还需要C++),通过“<代码> -M64 < /Cord>”参数作为64位编译器。它可能是优雅的,也可能不是优雅的-我在Solaris和MacOS X上都使用它。在
/configure
脚本中也可以有特定于包的选项来控制它(偶尔会覆盖它);使用“
/configure--help
”查看是否如此


问题似乎在于
libtool
被设置为32位系统。在更改为64位构建之前,请确保已运行“
make distclean
”以清除所有碎片,或者完全删除构建目录并从焦油球中重新提取材质。如图所示运行配置过程-机会很好,这就足够了。

您需要将
LDFLAGS=“-arch x86_64”cxflags=“-arch x86_64”
添加到
/configure
调用中,它应该可以正常编译

也就是说,我想你最终会得到一个半工作的ImageMagick安装,除非你还确保libjpeg和libpng也是用64位编译的


您可以尝试使用i386(32位)二进制文件启动httpd,方法是将
/usr/bin/arch-i386
添加到
/System/Library/LaunchDaemons/org.apache.httpd.plist
。或者您可以使用lipo将
/usr/sbin/httpd
转换为仅限i386的二进制文件。

投票“属于superuser.com”造成的混乱很麻烦——StackOverflow上到底还有什么?如果只有一个地方可以看,那就简单多了。