0

C でロギング ライブラリを実装し (これを liblogger と名付けました)、Autotools を使用してコンパイルおよびインストールしました。私が見る限り、ヘッダーとライブラリ自体 (現在は静的ライブラリにバンドルされています) が適切なディレクトリ (ヘッダーの /usr/local/include/liblogger/ と.a の場合は /usr/local/lib)。

現在、別のツールをそのライブラリにリンクしようとしています(Autotoolsを使用してコンパイルおよびビルドしました)。ロギング ライブラリの存在を確認するために、ここに記載されている内容に従ってconfigure.ac ファイルを作成しました。しかし、結果の構成スクリプトは次のように述べています。

/usr/local/include/liblogger/logger.h の使いやすさをチェックしています...いいえ

/usr/local/include/liblogger/logger.h の存在を確認しています...いいえ

/usr/local/include/liblogger/logger.h をチェックしています... いいえ

-l/usr/local/lib/liblogger.a で log_init をチェックしています... いいえ

名前付きファイルは存在しますが。

ヘッダーとライブラリを確認する configure.ac ファイルの部分は次のとおりです。

LIBLOGGER=/usr/local/lib
HEADERLOGGER=/usr/local/include/liblogger

AC_CHECK_HEADER([${HEADERLOGGER}/logger.h],
    [AC_DEFINE([HAVE_LOGGER_H], [1], [found logger.h])
    CFLAGS="$CFLAGS -I${HEADERLOGGER}"])

AC_CHECK_LIB([${LIBLOGGER}/liblogger.a],
    log_init, [found liblogger.a], [], [])

AC_SUBST(LIBLOGGER)

実際、私が試してみると:

AC_CHECK_FILE(
   [${HEADERLOGGER}/logger.h],
   [AC_MSG_NOTICE([Found logger.h])],
   [AC_MSG_NOTICE([Didn't find logger.h])]
   )

ファイルは見つかります。

ありがとう。

4

1 に答える 1

1

問題はツールの configure.ac ではなく、元のロガー ライブラリにありました。構成スクリプトの実行時に生成されたconfig.logファイルを調べると、次の行がありました。

/usr/local/include/liblogger/logger.h:22:19: fatal error: types.h: No such file or directory

そのため、ロガー ライブラリ内のいくつかの依存関係を実際に再編成する必要がありました。

実際、「/urs/local/include/liblogger」が検索されず、返されるため (理由はわかりません)、に設定HEADERLOGGERしても問題は解決しません。liblogger

configure: error: Couldn't find liblogger/logger.h

(おそらく、そのための以前のAC命令を忘れています)。

教訓:ログファイルには理由があります... :-S

于 2013-01-08T17:08:25.120 に答える