0

ImageMagick に依存する Apache モジュールであるOS X (前の質問を参照) にmoddimsをインストールしようとしています。

私が知る限り、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

私はすでに私の深さから外れていますが、今は完全に立ち往生しています! 何か案は?

4

2 に答える 2

1

物事が64ビット(または必要な変更を加えて32ビット)でコンパイルされるようにするための私の一般的なトリックは次のとおりです。

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

これは、' ' 引数CXX="g++ -m64"により、C コンパイラ (C++ も必要な場合は追加) を 64 ビット コンパイラとして扱います。-m64それは洗練されているかもしれませんし、そうでないかもしれません - それは私が Solaris と MacOS X の両方で使用しているもの./configureです。' ' を使用./configure --helpして、これがそうであるかどうかを確認してください。

問題は、libtoolが 32 ビット システムとしてセットアップされたことにあるようです。64 ビット ビルドに変更する前に、' ' を実行make distcleanしてすべての残骸を取り除くか、ビルド ディレクトリを完全に削除して、tar ボールからマテリアルを再抽出してください。示されているように構成プロセスを実行します。十分な可能性があります。

于 2009-07-26T23:12:46.040 に答える
0

LDFLAGS="-arch x86_64" CXXFLAGS="-arch x86_64"呼び出しに追加する必要があり、./configure正常にコンパイルされるはずです。

そうは言っても、libjpegとlibpngも64ビットでコンパイルされていることを確認しない限り、ImageMagickのインストールは半分しか機能しないと思います。

. _ /usr/bin/arch -i386_ /System/Library/LaunchDaemons/org.apache.httpd.plistまたは、lipo を使用/usr/sbin/httpdして i386 のみのバイナリに変換することもできます。

于 2009-07-30T01:26:22.123 に答える