我正在尝试在OS X上安装moddims(请参阅previous question),这是一个依赖于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
我已经超出了我的深度,但现在我完全陷入了困境!有什么想法吗?
答案 0 :(得分:1)
我确保编译64位(或32位,比照变通)的一般技巧是:
CC="gcc -m64" ...other environment... ./configure ...configure arguments...
这可以通过“CXX="g++ -m64"
”参数将C编译器(如果您需要C ++也添加-m64
)视为64位编译器。它可能优雅也可能不优雅 - 它是我在Solaris和MacOS X上使用的。对于./configure
脚本,还可以有特定于包的选项来控制它(偶尔会覆盖它);使用“./configure --help
”查看是否如此。
问题似乎是libtool
被设置为32位系统。在更改为64位版本之前,请确保运行“make distclean
”以清除所有碎片 - 或者完全删除构建目录并从tar-ball中重新提取材料。如图所示运行配置过程 - 机会足够好。
答案 1 :(得分:0)
您需要将LDFLAGS="-arch x86_64" CXXFLAGS="-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的二进制文件。