2011-12-17 1 views
3

사용할 수없는 라이브러리를 계속 읽으려고하는 rubygem을 설치하려고합니다. 이 문제를 해결하기 위해사용자가 설치된 라이브러리에 libtool을 가리키는 방법은 무엇입니까?

grep: /usr/lib64/libgdbm.la: No such file or directory /bin/sed: can't read /usr/lib64/libgdbm.la: No such file or directory libtool: link: /usr/lib64/libgdbm.la' is not a valid libtool archive

, 나는 내 자신의 libgdbm을 설치하고 메이크 LDFLAGS에하지만 아무 소용로의 libgdbm의 경로를 제공했다.

도움을 주시면 감사하겠습니다.

답변

1

깨끗한 라이브러리 검색 (-L 또는 pkg-config)이 "library/package gdbm not found"와 같은 메시지를 생성했기 때문에이 rubygem은 더러 웠습니다. 특히 라 파일의 grep-and-sed 절차는 정말 더러워 보입니다. 이 보석의 저자가 올해 선물을 얻지 못한다는 것을 산타가 알고 있는지 확인하십시오.

gem에는 아마도 libtool 아카이브 하드 코딩 된 경로가 있습니다. 우선, 보석의 Makefile에서 /usr/lib64/libgdbm.la에 대해 grep을 시도하십시오. 하드 코드 된 경로를 변경하고 설치 스크립트에 sed 와일드 카드로 실행되는 것으로 보이는 시스템 디렉토리에 대한 쓰기 권한이 없는지 확인하십시오.

+0

감사합니다 실행하기 전에 실행이있는 경우. 이 컴퓨터에 대한 관리자 권한이 없습니다. libtool을 살펴본 결과, 필요한 라이브러리의 검색 경로처럼 보이는 디렉토리 목록이 있습니다. 그러나 보석을 설치하는 동안 설치 한 gdbm 라이브러리를 설치하는 방법을 모르겠습니다. 모든 단서? – Ketan

1

Libtool은 공유 라이브러리를 만들고이를 적절하게 링크하기 위해 컴파일러 제품군 및 운영 체제에 대한 자세한 지식이 필요합니다. libtool 배포판을 설치하면 시스템 고유의 libtool 스크립트가 바이너리 디렉토리에 설치됩니다. 그러나 자신의 패키지로 libtool을 배포 할 때 패키지를 컴파일하는 데 사용되는 컴파일러 제품군과 운영 체제를 항상 알 수는 없습니다.

이러한 이유 때문에 libtool을 사용하기 전에 구성해야합니다. 이 아이디어는 GNU configure 스크립트를 사용하는 사람에게는 친숙해야합니다. configure는 시스템 기능에 대한 여러 가지 테스트를 실행 한 다음 Makefiles (및 가능한 경우 config.h 헤더 파일)를 생성 한 후 make를 실행하고 패키지를 빌드 할 수 있습니다.

Libtool은 설치 프로그램의 호스트 컴퓨터 용 libtool 스크립트를 생성하기 위해 configure 스크립트에 자체 테스트를 추가합니다. 이를 위해 configure.ac에서 LT_INIT 매크로로 재생할 수 있습니다.

그래서 짧은에, 패키지는 파일을 구성 답장을

make distclean //clean up all the previous generated files 
autoconf //or autoreconf to generate configure script from configure.ac and configure.in 
automake //to generate new Makefile.in from Makefile.ac 
./configure //to generate new Makefile and libtool 
관련 문제