我如何链接到GNU readline库而不是在macosx中libedit ?



尝试在macosx上构建Term-Readline-Gnu,失败抱怨libedit并建议使用gnu readline。我怎么做呢?

这是我尝试过的其中一个:

首先,我静态地构建了GNU libreadline v6.2,但没有将其安装到确保我没有把同名的系统版本搞砸:

。弗雷德/configure——prefix =/用户//下载/tmp1

使

让install-static

然后尝试构建Term_Readline-Gnu-1.20

cmc:Term-ReadLine-Gnu-1.20——includedir =/用户/cmc/下载/tmp1/包括——libdir =/用户/弗雷德/下载/tmp1/lib

发现"/usr/lib/libtermcap.dylib"。

gcc-4.2 -I/Users/Fred/Downloads/tmp1/include -arch x86_64 -arch i386-arch ppc -g -pipe -fno-common -DPERL_DARWIN -fno-strict-aliasing -I/usr/local/include - have_string_h rlver.c -o rlver -L/Users/Fred/Downloads/tmp1/lib -arch x86_64 -arch i386 -arch ppc -L/usr/local/lib -lreadline -ltermcap

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

您使用的libedit库是libedit库。使用GNUReadline库。

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

克里斯

这是一篇很棒的文章,解释了如何在几个简单的步骤中解决OP的问题:

brew install readline

brew link --force readline

cpanm Term::ReadLine::Gnu

brew unlink readline

检查

brew info readline | head -1

看起来GNU readline库不在/Users/Fred/Downloads/tmp1/lib中。

首先确保库已经安装。如果你有Mac端口:

sudo port install readline

在我的机器上,port将东西安装到/opt上,所以我运行:

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

所以,为了重提一个老问题,我刚刚解决了这个问题。

正如MisterEd所说,您需要GNU readline库。但是,当您制作Term::Readline::Gnu时,您还需要确保GNU readline库体系结构与perl体系结构兼容,因为perl使用编译器开关来编译它的模块。

在OS X中,如果您使用port或fink安装备用perl,您将获得针对您的体系结构(i386或x86_64)编译的perl二进制文件。在这种情况下,MisterEd的答案是A-OK。

然而,正如您从上面的输出中看到的,提问者使用的是编译为通用二进制文件的Perl (-arch i386 -arch x86_64)——可能是系统默认的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

现在,由于某种原因,make在创建.dylib共享库的最后一步中失败了,但此时它已经构建了libreadline。

条件::Readline:: Gnu:

然后我下载了Term::Readline::Gnu的。tar.gz文件并做了:

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

最新更新