rrdtool 1.4.7 コンパイルに失敗しました: glib-2.0/glib.h

rrdtool 1.4.7 コンパイルに失敗しました: glib-2.0/glib.h

ソースパッケージからrrdtoolをコンパイルしようとしています。私はRPMパッケージを使用していないので、パッケージのインストールを要求しないでください。 ;)

rrdtool 以前に必要なすべてのソフトウェアをコンパイルしました。http://oss.oetiker.ch/rrdtool/doc/rrdbuild.en.html

rrdtoolの./configureが可能です。

ただし、そうすると、次のエラーが発生します。

      CC     rrdcached-rrd_daemon.o
rrd_daemon.c:108:27: erreur: glib-2.0/glib.h : Aucun fichier ou dossier de ce type
rrd_daemon.c:246: erreur: expected â=â, â,â, â;â, âasmâ or â__attribute__â before â*â token
rrd_daemon.c: In function âadd_response_infoâ:
rrd_daemon.c:540: attention : implicit declaration of function âva_startâ
rrd_daemon.c:540: attention : nested extern declaration of âva_startâ
rrd_daemon.c:546: attention : implicit declaration of function âva_endâ
rrd_daemon.c:546: attention : nested extern declaration of âva_endâ
[...]

私のシステムの/usr/local/glib-2.34.0/glib/glib.hにglib-2.0/glib.hがあります。

glibパスを含む環境変数PKG_CONFIG_PATHを設定しました。 /usr/local/glib-2.34.0/lib/pkgconfig/

私はそれについていくつかのスレッドを見ましたが、何も私の出来事を助けませんでした。

config.logを見ると、すべてが大丈夫だと思います!

ベストアンサー1

管理文書またはCEタイプファイル" == "該当するファイルやディレクトリはありません。"

PKG_CONFIG_PATH.pcパッケージ自体の代わりに追加のファイルを見つけるために追加する(デフォルトではない)パスが含まれています。そのディレクトリに正しいファイルがある場合は.pc正常に動作します。

次の出力を確認してください。

pkg-config --cflags --libs glib-2.0

(設定の有無にかかわらずPKG_CONFIG_PATH

それはあなたのglib-2.0インクルードとライブラリのインストールパスは私のものです/usr/local/

-I/usr/local/include/glib-2.0 -I/usr/local/lib/glib-2.0/include  \
-L/usr/local/lib -lglib-2.0

ファイルが間違っていることを確認してください.pc

しかし、、あなたが提供したパスは、glib.hインストール全体よりも解凍されたソースコードに似ています。glib-2.0。 glib-2.0をインストールしてビルドしましたか?手順URLに従って構築した場合は正しいものではないように見え、手順を繰り返す必要があります。

特に、これらのパッケージの一部の一般的な構成/作成/インストールを実行しない理由はありません/usr/localglib-2.0宿ライブラリファイルlibXML2-- すでにインストールされているものと競合しない限り。

RRDtoolのビルド文書の背後にあるロジックは、可能な限りそれ自体が含まれるようにすべてを/tmpビルドしてインストールすることです。/opt非常に強力なアプローチかもしれませんが、いくつかの欠点があります(すべての種類の魔法のような環境変数を設定する必要があるという点を含む)。


修正する:問題は、glib-2.0のインストールパスがrrdtoolで使用されているインクルードパスと競合することです。/usr/local/glib-2.34.0/ビルドにインストールするときにこのパスを.pc指定します。/usr/local/glib-2.34.0/include/glib-2.0すでにサブディレクトリが含まれています。 glib-2.0したがって、rrdtoolがそれを含めようとすると<glib-2.0/glib.h>失敗します。私はこれがglib-2.0が/usr「予想される」場所またはその下にインストールされたとき/usr/local(おそらくビルドガイドパスを完全に使用するとき)に隠れるrrdtoolの問題だと思います。

にインストールしている場合は、/usr/localパスを含めると " "が正しく機能/usr/local/includeします。#include <glib-2.0/glib.h>

修正ですべての依存関係をビルドしてインストールすることをお勧めします/usr/local(次に設定するだけですPKG_CONFIG_PATH=/usr/local/lib/pkgconfig)。またはrrdtool ビルドの指示に厳密に従います。またはCFLAGSを実行する前に、glib-2.0がインストールされている場所を設定できますconfigure。たとえば、次のようになります。

export CFLAGS="-I/usr/local/glib-2.34.0/include"

(つまり、レポートの親ディレクトリpkg-config --cflags glib-2.0

コンパイルが中断された場合は、次のコマンドを実行して何が起こっているのかをよりよく知ることができます。

make AM_DEFAULT_VERBOSITY=1

エラーが発生した後、今度は再試行して使用されたコマンドが印刷されるため、gcc -Iフラグを確認できます。

わかった、見つけたエラーレポート、修正されました(タイトルにもかかわらず」非標準の glib 位置を使用したビルドの修正「ちょっと誤解を招くかもしれません。)しかし、それ以降は新しい安定版リリースはありません。

おすすめ記事