OSXでYAPプロローグをコンパイルすると、libarchiveが見つかりません。

OSXでYAPプロローグをコンパイルすると、libarchiveが見つかりません。

OSX(Mountain Lion)でYap Prologの最新の開発バージョンをコンパイルしようとしています。初めて試したとき、次のメッセージが表示されました。

##################################################################
# ERROR: Could not find library archive (-larchive).  Dropped
# library(archive). Library archive is available from
# http://code.google.com/p/libarchive/
#
# Most Unix/Linux distributions are shipped with binaries.  Make
# sure to have the development library installed.  E.g.
#
#   Debian/Ubuntu/Mint: aptitude install libarchive-dev
#   Fedora/...      yum install libarchive-devel
#   MacOS (Macports):   port install libarchive
##################################################################

そのため、提案されているように、Macポートを使用してlibarchiveをインストールしましたsudo port install libarchive。成功したインストール。

ただし、再コンパイル後もlibarchiveが見つからないというメッセージが表示され続けます。私のシステムでlibarchiveファイル/opt/local/lib/libarchive.dylibを見つけました/opt/local/lib/libarchive.2.dylibDYLD_LIBRARY_PATH/opt/local/lib

この問題をどのように解決できるかを知っている人はいますか?

答え1

-devel パッケージには通常、ヘッダーファイル、pkgconfig データ、および類似のファイルが含まれます。必要なものは何でも含まれます。協会関連ライブラリのアプリケーションです。ポートがどのように機能するかはよくわかりませんが/opt/local(または/opt/local/includearchive.harchive_entry.h。これらのファイルがないと、アプリケーションをコンパイルできません。パスがやや非標準的なように聞こえるので、(/opt/local/...)ライブラリとヘッダーファイルがその特定のディレクトリから検索されるべきであることをビルドシステムに知らせる必要があるかもしれません。

今日、UNIXシリーズシステムの基本的な共通ファイルレイアウトは次のとおりです。ファイルシステム階層標準。最も重要な部分は次のとおりです。

PREFIX
|-- bin
|-- etc
|-- include
|-- lib
|-- sbin
`-- share
  • binバイナリ(実行するプログラム)を保持しますsbin。これは、これらのディレクトリが通常$PATHシェル変数で参照される理由です。 in は、以下を表すためにs使用されます。sbin変化のない静的にリンクされたバイナリと同様に、動的接続は必要なく、デフォルトでは「現状のまま」実行されます。

  • lib(および/またはlib64lib32共有(静的かもしれません)ライブラリを保存する

  • includeコードをライブラリ(デフォルトではAPI定義)に関連付けるヘッダファイルが含まれています。

  • etcshareデータファイルの設定と添付に使用されます。

  • PREFIX通常、これは/usr、またはです/usr/localが、ホームディレクトリにこれらの構造を作成することもできます。/opt/opt/<something>

バイナリを見つける場所をビルドシステムに知らせる方法は、コードで使用されるbsによって異なります。通常、このタイプの情報はソースコードに付属のREADMEファイルに保存されます。たとえば、GNU autotoolsの場合、通常はINSTALLスクリプトに渡される引数の形式を取ります。これが利用できない場合は、コンパイラとリンカが使用する変数を明示的にエクスポートする必要があります。--with-name=PREFIX--with-name-lib=PREFIX/lib --with-name-include=PREFIX/includeconfigure

$ export CFLAGS="-IPREFIX/include $CFLAGS"
$ export LDFLAGS="-LPREFIX/lib $LDFLAGS"

-I/opt/local/includeあなたの場合、これはそれぞれとです-L/opt/local/lib

関連情報