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.h
및 archive_entry.h
. 이러한 파일이 없으면 응용 프로그램을 컴파일할 수 없습니다. 경로가 다소 비표준적인 것처럼 들리므로( /opt/local/...
) 라이브러리와 헤더 파일이 해당 특정 디렉터리에서 검색되어야 함을 빌드 시스템에 알려야 할 수도 있습니다.
오늘날 UNIX 계열 시스템의 기본 공통 파일 레이아웃은 다음과 같습니다.파일 시스템 계층 표준. 가장 중요한 부분은 다음과 같습니다.
PREFIX
|-- bin
|-- etc
|-- include
|-- lib
|-- sbin
`-- share
bin
바이너리(실행하는 프로그램)를 보유 합니다sbin
. 이것이 바로 이러한 디렉토리가 일반적으로$PATH
쉘 변수에 언급되는 이유입니다. in은 다음을 나타내는s
데 사용됩니다.sbin
변화 없는정적으로 연결된 바이너리와 마찬가지로 동적 연결이 필요하지 않으며 기본적으로 "있는 그대로" 실행됩니다.lib
(및/또는lib64
)lib32
공유(정적일 수도 있음) 라이브러리 저장include
코드를 라이브러리(기본적으로 API 정의)에 연결하는 헤더 파일을 포함합니다.etc
share
데이터 파일을 구성하고 첨부하는 데 사용됩니다 .PREFIX
일반적으로 이는/usr
,/usr/local
또는/opt
이지만/opt/<something>
홈 디렉터리에 이러한 구조를 만들 수도 있습니다.
바이너리를 찾을 위치를 빌드 시스템에 알리는 방법은 코드에서 사용하는 bs에 따라 다릅니다. 일반적으로 이러한 유형의 정보는 소스 코드와 함께 제공되는 README
파일 에 저장됩니다. 예를 들어, GNU autotools의 경우 일반적으로 INSTALL
스크립트에 전달되는 인수 형식을 취합니다. 이를 사용할 수 없는 경우 컴파일러와 링커에서 사용하는 변수를 명시적으로 내보내야 할 수 있습니다.--with-name=PREFIX
--with-name-lib=PREFIX/lib --with-name-include=PREFIX/include
configure
$ export CFLAGS="-IPREFIX/include $CFLAGS"
$ export LDFLAGS="-LPREFIX/lib $LDFLAGS"
-I/opt/local/include
귀하의 경우 이는 각각 및 입니다 -L/opt/local/lib
.