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.dylib.DYLD_LIBRARY_PATH/opt/local/lib

이 문제를 어떻게 해결할 수 있는지 아는 사람 있나요?

답변1

-devel 패키지에는 일반적으로 헤더 파일, pkgconfig 데이터 및 유사한 파일이 포함되어 있습니다. 필요한 것은 무엇이든 포함됩니다.협회관련 도서관에 대한 응용 프로그램입니다. 포트가 어떻게 작동하는지 잘 모르겠지만 /opt/local(또는 /opt/local/include) archive.harchive_entry.h. 이러한 파일이 없으면 응용 프로그램을 컴파일할 수 없습니다. 경로가 다소 비표준적인 것처럼 들리므로( /opt/local/...) 라이브러리와 헤더 파일이 해당 특정 디렉터리에서 검색되어야 함을 빌드 시스템에 알려야 할 수도 있습니다.

오늘날 UNIX 계열 시스템의 기본 공통 파일 레이아웃은 다음과 같습니다.파일 시스템 계층 표준. 가장 중요한 부분은 다음과 같습니다.

PREFIX
|-- bin
|-- etc
|-- include
|-- lib
|-- sbin
`-- share
  • bin바이너리(실행하는 프로그램)를 보유 합니다 sbin. 이것이 바로 이러한 디렉토리가 일반적으로 $PATH쉘 변수에 언급되는 이유입니다. in은 다음을 나타내는 s데 사용됩니다.sbin변화 없는정적으로 연결된 바이너리와 마찬가지로 동적 연결이 필요하지 않으며 기본적으로 "있는 그대로" 실행됩니다.

  • lib(및/또는 lib64) lib32공유(정적일 수도 있음) 라이브러리 저장

  • 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.

관련 정보