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

2024-04-10

我正在尝试安装moddims http://code.google.com/p/moddims/在 OS X 上(请参阅上一个问题 https://stackoverflow.com/questions/1185106/how-do-i-configure-make-install-against-an-older-version-of-a-library),一个依赖于 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/

但这给了我这个错误:

checking for MagickWandGenesis in -lMagickWand... no
checking for MagickWandGenesis in -lWand... no
configure: error: ImageMagick not found.

以前,在没有 CFLAGS 64 位内容的情况下进行编译时,这工作得很好。

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

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它愉快地运行了一段时间,然后因以下错误而终止:

/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 位,已作必要修改)的一般技巧是:

CC="gcc -m64" ...other environment...  ./configure  ...configure arguments...

这对待 C 编译器(添加CXX="g++ -m64"如果您也需要 C++)作为 64 位编译器,凭借 '-m64' 争论。它可能很优雅,也可能不那么优雅——我在 Solaris 和 MacOS X 上都使用它。还可以有特定于包的选项./configure控制它的脚本(有时会覆盖它);使用 './configure --help' 看看是否如此。

问题看起来是libtool被设置为 32 位系统。在更改为 64 位版本之前,请确保您已运行 'make distclean' 清除所有碎片 - 或完全删除构建目录并从 tar 球中重新提取材料。运行如图所示的配置过程 - 很有可能就足够了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OS X 下将 ImageMagick 编译为 64 位? 的相关文章

随机推荐