2011-08-27 4 views
7

macosx에서 Term-Readline-Gnu를 빌드하려고 시도하면 libedit에 대한 불만과 gnu readline 사용을 권장하지 않습니다. 어떻게해야합니까?macosx에서 libedit보다는 GNU readline 라이브러리를 어떻게 링크합니까?

이 내가 시도 시도 중 하나입니다

우선 정적 GNU의 libreadline의 V6.2을 구축하지만 설치하지 않은 - 에 저도 같은 이름의 시스템 버전을 망치지 않았는지 확인하십시오

./configure를 --prefix =/사용자/프레드/다운로드/

설치 정전기 할 수 있도록 tmp1

기간-에서는 ReadLine-은 GNU-1.20 CMC $ 펄 Makefile.PL --includedir =/사용자/CMC/다운로드/tmp1/같습니다

그런 다음 Term_Readline-은 GNU-1.20

CMC를 구축하는 노력 --libdir =/사용자/프레드/다운로드/tmp1/lib에

찾을 수`/usr/lib/libtermcap.dylib '.

GCC-4.2 -I/사용자/프레드/다운로드/tmp1 /가 -arch x86_64에 포함 -arch i386을 -arch PPC -g -pipe -fno-일반적인 -DPERL_DARWIN -fno-엄격한 앨리어싱 -I는/usr/로컬/포함 -DHAVE_STRING_H rlver.c -o rlver -L/사용자/프레드/다운로드/tmp1/lib -arch x86_64 -arch i386 -arch ppc -L/usr/local/lib -lreadline -ltermcap

!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!

사용중인 libreadline은 libedit 라이브러리입니다. GNU Readline Library를 사용하십시오.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!

크리스

답변

0

그것은 GNU 작성한 Readline 라이브러리 /Users/Fred/Downloads/tmp1/lib에없는 것으로 나타납니다.

먼저 라이브러리가 설치되어 있는지 확인하십시오. 당신이 맥 포트가있는 경우 : 내 컴퓨터 port

sudo port install readline 

/opt 물건을 설치, 그래서 실행 :

그래서
perl Makefile.PL --includedir=/opt/local/include --libddir=/opt/local/lib 
0

이 오래된 질문을 드러하기 위해, 난 그냥했다 /이 문제를 해결했다. MisterEd가 말한대로

, 당신은 GNU readline 라이브러리를해야합니다. 그러나 Term::Readline::Gnu을 만들 때 perl은 컴파일 된 컴파일러 스위치를 사용하여 모듈을 컴파일하기 때문에 GNU readline 라이브러리 아키텍처가 perl 아키텍처와 호환되는지 확인해야합니다. 당신은 포트 또는 핑크를 사용하여 대체 펄을 설치하는 경우

는 OS X에서, 당신은 단지 (I386 또는 x86_64에) 아키텍처 용으로 컴파일 된 펄 바이너리를 얻을 것이다. 이 경우 MisterEd의 답변은 A-OK입니다.

위의 출력에서 ​​볼 수 있듯이 질문자는 유니버설 바이너리 (-arch i386 -arch x86_64)로 컴파일 된 Perl (아마도 시스템 기본 Perl)을 사용하고 있습니다. 필자의 경우 필자는 perlbrew를 사용하여 새로운 버전의 perl을 구축했지만, 다른 OS X 머신에 배포 할 수 있도록 보편적이어야하므로 보편적 인 빌드를 만들기 위해 일부 작업을 수행했습니다.

이러한 경우 Gnu Readline 라이브러리를 몇 가지 추가 스위치로 직접 컴파일해야합니다.

GNU 작성한 Readline : 내가 이런 짓을

./configure CFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" \ 
LDFLAGS="-arch i386 -arch x86_64 -mmacosx-version-min=10.5" ./configure \ 
--prefix=/usr/local; make 

이제 몇 가지 이유를 들어, .dylib 공유 라이브러리를 만드는 마지막 단계 중 하나에 실패했지만 그 시점에서 이미 libreadline.a을 구축했다 확인 나는/usr/local/lib에 복사했다.

기간 : Readline와 ::은 GNU :

perl Makefile.PL --libdir='/usr/local/lib'; make; make install 
+0

이 당신이 [여기]를 설명하는 모든 바로 가기를 사용할 수 있도록 않습니다 (http://www.howtogeek.com/howto/ubuntu/keyboard- 당신의 전체 OSX 시스템에서 bash-command-shell-for-ubuntu-debian-suse-redhat-linux-etc /와 같은 단축키를 사용 하시겠습니까? – mbigras

+0

어떤 OSX 응용 프로그램/유틸리티가 Term :: Readline :: Gnu를 사용하는지 모르므로 잘 모르겠습니다. Mr. L의 해결책을 아래에서 시도해보고 무슨 일이 일어나는 지 확인할 수 있습니다. Gnu readline 라이브러리를 Term :: Readline :: Gnu에 하드 코딩하는 것처럼 보이기 때문에 똑같은 작업을 수행해야합니다. – Colin

7

Here 방법을 설명하는 멋진 게시물입니다 : 나는 기간 : Readline와 ::은 GNU의 .tar.gz를 다운로드하고했던 그런

몇 가지 간단한 단계에서 영업 이익의 문제를 해결 :

brew install readline

brew link --force readline

,

cpanm Term::ReadLine::Gnu

brew unlink readline

확인

brew info readline | head -1 
+0

"cpan Term :: ReadLine :: Gnu" 대신 cpanm – StandardNerd

관련 문제