2011-08-27 5 views
7

Intentando construir Term-Readline-Gnu en macosx, no se queja de libedit y recomienda usar gnu readline. ¿Cómo puedo hacer eso?¿Cómo puedo vincular con la biblioteca GNU readline en lugar de libedit en macosx?

Este es uno de los intentos que he intentado:

Primero construí GNU v6.2 libreadline forma estática, pero no la ha instalado - a asegurarse de que no estropeo la versión del sistema con el mismo nombre:

./configure --prefix =/usuarios/Fred/Descargas/tmp1

hacen

make install-estática

Luego trató de construir Term_Readline-Gnu-1,20

CMC: Término-ReadLine-gnu-CMC 1.20 $ perl Makefile.PL --includedir =/usuarios/CMC/Descargas/tmp1/include --libdir =/Users/Fred/Downloads/tmp1/lib

Encontrado `/usr/lib/libtermcap.dylib '.

gcc-4.2 -I/Usuarios/Fred/Descargas/tmp1/x86_64 incluyen -arch -arch i386 ppc -arch -g -pipe -DPERL_DARWIN -fno común -fno-estricta-aliasing -I/usr/local/include -DHAVE_STRING_H rlver.c -o rlver -L/Users/Fred/Descargas/tmp1/lib -arch x86_64 -arch i386 -arch ppc -L/usr/local/lib -lreadline -ltermcap

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

La libreadline que está utilizando es la biblioteca libedit. Utilice la biblioteca GNU Readline.

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

Chris

Respuesta

0

Parecería que la biblioteca readline de GNU no está en /Users/Fred/Downloads/tmp1/lib.

Primero asegúrese de que la biblioteca esté instalada. Si tiene Mac Puertos:

sudo port install readline 

En mi máquina port instala cosas que /opt, por lo que corrió:

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

Así, a Drudge una vieja pregunta, acabo de tener/resuelto este problema.

Como dice MisterEd, necesita la biblioteca GNU readline. Sin embargo, cuando esté haciendo Term::Readline::Gnu, también debe asegurarse de que la arquitectura de la biblioteca readline de GNU sea compatible con su arquitectura perl, ya que perl compila sus módulos utilizando los modificadores del compilador con los que se compiló.

En OS X, si instala un perl alternativo usando puerto o fink, obtendrá un binario perl compilado solo para su arquitectura (i386 O x86_64). En ese caso, la respuesta de MisterEd es A-OK.

Sin embargo, como puede ver en el resultado anterior, el cuestionario está utilizando un Perl que se compiló como un binario universal (-arch i386 -arch x86_64) - probablemente el Perl predeterminado del sistema. En mi caso, estaba usando perlbrew para construir una versión más nueva de Perl, pero necesitaba que fuera universal para poder enviar cosas a otras máquinas OS X, así que había trabajado un poco para hacer una compilación universal.

En estos casos, debe compilar la biblioteca Gnu Readline a mano con algunos modificadores adicionales. Hice esto:

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 

Ahora, por alguna razón, no pudo hacer en uno de los pasos finales que crean la biblioteca compartida .dylib, pero en ese momento ya se había construido libreadline.a, que copié en/usr/local/lib.

Term :: :: Readline de GNU:

Luego he descargado el .tar.gz para Readline Term :: :: GNU y lo hice:

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

qué esto le permite utilizar todos los atajos descritos [aquí] (http://www.howtogeek.com/howto/ubuntu/keyboard- shortcuts-for-bash-command-shell-for-ubuntu-debian-suse-redhat-linux-etc /) en todo su sistema OSX? – mbigras

+0

No estoy seguro porque no sé qué aplicaciones/utilidades OSX usan Term :: Readline :: Gnu. Podrías probar la solución del Sr. L'a continuación, y ver qué pasa: parece que codifica el uso de la biblioteca readline de Gnu en Term :: Readline :: Gnu, por lo que debería lograr lo mismo. – Colin

7

Here es un mensaje increíble que explica cómo arreglar un problema de OP en pocos pasos simples:

brew install readline

brew link --force readline

cpanm Term::ReadLine::Gnu

brew unlink readline

Comprobar

brew info readline | head -1 
+0

"cpan Term :: ReadLine :: Gnu" en lugar de cpanm – StandardNerd

Cuestiones relacionadas