7

macosx で Term-Readline-Gnu をビルドしようとすると、libedit について不平を言い、gnu readline の使用を推奨して失敗します。それ、どうやったら出来るの?

これは私が試した試みの1つです:

まず、GNU libreadline v6.2 を静的にビルドしましたが、インストールしませんでした。同じ名前のシステム バージョンを台無しにしないようにするためです。

./configure --prefix=/Users/Fred/Downloads/tmp1

作る

インストールを静的にする

次に、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 ライブラリを使用します。

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

クリス

4

3 に答える 3

7

これは、OPの問題をいくつかの簡単な手順で修正する方法を説明する素晴らしい投稿です。

brew install readline

brew link --force readline

cpanm Term::ReadLine::Gnu

brew unlink readline

小切手

brew info readline | head -1
于 2013-12-02T01:01:12.663 に答える
0

GNUreadlineライブラリはにないように見え/Users/Fred/Downloads/tmp1/libます。

まず、ライブラリがインストールされていることを確認します。Macポートをお持ちの場合:

sudo port install readline

私のマシンでは、にport物事をインストールする/optので、次のように実行しました。

perl Makefile.PL --includedir=/opt/local/include --libddir=/opt/local/lib
于 2011-11-11T17:53:50.123 に答える
0

したがって、古い質問を掘り下げるために、私はこの問題を解決した/解決しました。

MisterEd が言うように、GNU readline ライブラリが必要です。ただし、 を作成するときはTerm::Readline::Gnu、GNU readline ライブラリ アーキテクチャが perl アーキテクチャと互換性があることも確認する必要があります。これは、perl がコンパイル時に使用したコンパイラ スイッチを使用してモジュールをコンパイルするためです。

OS X では、port または fink を使用して別の perl をインストールすると、お使いのアーキテクチャ (i386 または x86_64) 用にコンパイルされた perl バイナリが得られます。その場合、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

何らかの理由で、make は .dylib 共有ライブラリを作成する最終ステップの 1 つで失敗しましたが、その時点ですでに libreadline.a がビルドされており、これを /usr/local/lib にコピーしました。

用語::Readline::Gnu:

次に、Term::Readline::Gnu の .tar.gz をダウンロードして、次のことを行いました。

perl Makefile.PL --libdir='/usr/local/lib'; make; make install
于 2013-07-31T17:58:28.887 に答える