尝试在macosx上构建Term-Readline-Gnu,无法抱怨libedit并建议使用gnu readline。我该怎么做?
这是我尝试过的尝试之一:
首先我静态构建了GNU libreadline v6.2但没有安装它 确保我没有使用相同的名称搞砸系统版本:
./ configure --prefix = / Users / Fred / Downloads / tmp1
请
make install-static
然后尝试构建Term_Readline-Gnu-1.20
cmc:Term-ReadLine-Gnu-1.20 cmc $ perl Makefile.PL --includedir = / Users / cmc / Downloads / tmp1 / include --libdir = / Users / Fred / Downloads / 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 -DHAVE_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
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
您使用的libreadline是libedit库。使用GNU Readline Library。
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!
克里斯
答案 0 :(得分:7)
Here是一篇很棒的文章,解释了如何通过几个简单的步骤解决OP的问题:
brew install readline
brew link --force readline
cpanm Term::ReadLine::Gnu
brew unlink readline
检查
brew info readline | head -1
答案 1 :(得分:0)
看来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
答案 2 :(得分:0)
所以,为了解决一个老问题,我刚刚解决了这个问题。
正如MisterEd所说,你需要GNU readline库。但是当你创建Term::Readline::Gnu
时,你还需要确保GNU readline库体系结构与你的perl体系结构兼容,因为perl使用它编译的编译器开关来编译它的模块。
在OS X中,如果使用port或fink安装备用perl,您将获得仅为您的体系结构编译的perl二进制文件(i386或x86_64)。在那种情况下,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
现在由于某种原因,在创建.dylib共享库的最后一步之一上失败了,但此时它已经构建了libreadline.a,我将其复制到/ usr / local / lib。
期限::的Readline ::羚:
然后我下载了.tar.gz for Term :: Readline :: Gnu并做了:
perl Makefile.PL --libdir='/usr/local/lib'; make; make install