問題を含める[閉じる]

問題を含める[閉じる]

imagick-v3.1.0RC2CentOS 5.5にパッケージをインストールしています。 ImageMagick 6.7.9-9もインストールしましたが、make手順に問題があります。

問題は、埋め込みファイルが見つからないことです。

/usr/local/include/ImageMagick/wand/magick/accelerate.h:25:31: エラー: Magick/morphology.h: そのファイルまたはディレクトリがありません。

フォルダをコピーするとmagick見つけること/usr/local/include/ImageMagick/wand/magick/magick ができますが、他のファイルが見つからないというメッセージが表示されますので、magic/xxx.hMagicをコピーする必要があります。この問題を解決する方法はありますか?

シンボリックリンクを作成しましたが、25行目の/ImageMagick/wand/magick ln -s ../magick magickファイル内にまだ同じ問題があります。accelerate.h#include <magick/random_.h>

私もやってみました。

make --include-dir=/usr/local/include/ImageMagick/ --include-dir=/usr/local/include/ImageMagick` and `make -I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick

make -n私はmakeが実行するすべてのコマンドを表示するために実行し、コマンドを追加して-I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick手動で1つずつ実行しました。

より速い方法はありませんか?

修正、解決済み:

秘密は、ファイルがどこにあるかを見つけ、find / --name "missing.file"Make ieを実行したフォルダにシンボリックリンクを追加することでした。/usr/src/imagick-v3.1.0RC2/

ln -s usr/local/include/ImageMagick/magick magick

そして

ln -s usr/local/include/ImageMagick/wand wand

答え1

-I/usr/local/include/ImageMagick/wandたとえば、杖ディレクトリに-Iを追加します。-I/usr/local/include/ImageMagick/wand/magick

答え2

make申し訳ありません。完全に誤解されたようです。私はこの質問にGNU makeについて話していると仮定して答えています。しかし、一部の人々は他のバージョンの存在を完全に否定しているようです。

次の 2 行のコードで取得できるタスクは次のとおりです。

make --include-dir=/usr/local/include/ImageMagick/ --include-dir=/usr/local/include/ImageMagick
make -I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick

ただこれらの引数を に渡すだけですmake。正当であるがプロセスが呼び出すコンパイラによって使用されるインクルードではなく、/Makefileに含まれるインクルードを提供します。GNUmakefilemake

これを達成するための最良の実行方法は次のとおりです。

make -npf /dev/null

(パイプラインがless左右に入ります)

基本的なルールを理解します。 C または C++ コンパイラがこれらのファイルを検索できるようにし、make プロセスがデフォルトのルールおよび/またはルールを使用すると仮定すると、次のいずれかの変数を設定できる必要があります。

  • CPPFLAGS(Cプリプロセッサフ​​ラグ)
  • CFLAGS(Cコンパイラフラグ)
  • CXXFLAGS(C++ コンパイラフラグ)

具体的な内容を見るにはあなたの makeファイルチェックアウト

make -np
# or ...
make -npf Makefile

基本ルールが上書きされた場合。

これは、プロセスの内部構造に基づいてmakeコンパイラが正しい場所を指すのに役立ちます。たとえば、GCCでコンパイルする場合そしてリンクがCPPFLAGS正しく機能する必要があります。あなたの例では、make次のように呼び出したいと思います。

make CPPFLAGS="-I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick"

installデフォルトのターゲットだけでなく、自分の名前のターゲットも使用したいとします。

make CPPFLAGS="-I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick" install

make instead...別のオプションは、コマンドラインから変数を環境変数に渡すことです。

CPPFLAGS="-I /usr/local/include/ImageMagick/ -I /usr/local/include/ImageMagick" make

...同様の方法で定義(-DNAMEOFDEFINE=VALUE)を設定できます。

関連情報