2011-08-27 7 views
7

Term-Readline-Gnuをmacosxでビルドしようとすると、libeditに関する不満とgnu readlineの使用を勧められません。それ、どうやったら出来るの?macosxでlibeditではなくGNU readlineライブラリをリンクするにはどうしたらいいですか?

これは私が試してみました試みの一つである:

まず私は静的にGNUのlibreadlineのV6.2を構築しましたが、それをインストールしていない - に私は、同じ名前を持つシステムのバージョンを台無しにしていないことを確認してください:

は./configure --prefix = /ユーザ/フレッド/ダウンロード/ TMP1

を作るインストールし、静的

を作ります用語-ReadLineメソッド・ヌー - 1.20 CMC $ perlのMakefile.PL --includedir = /ユーザ/ CMC /ダウンロード/ TMP1 /含まれます:

はその後Term_Readline-ヌー - 1.20

CMC構築しようとしました--libdir =/Users/Fred/Downloads/tmp1/lib

「/usr/lib/libtermcap.dylib」が見つかりました。

のgcc-4.2 -I /ユーザ/フレッド/ダウンロード/ TMP1 /は-fno-厳しいエイリアシング-Iは/ usr/-arch x86_64の-arch i386の -arch ppcの-g -pipe -fno-共通-DPERL_DARWINが含まれますローカル/インクルード-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ライブラリを使用してください。

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

クリス

答えて

0

それはGNU readlineライブラリは/Users/Fred/Downloads/tmp1/libではないように思われます。

まず、ライブラリがインストールされていることを確認します。あなたがMacのポートがある場合:私のマシンport

sudo port install readline 

/optに物事をインストールするので、私は走った:

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

をだから、古い質問をドラッジし、私は持っていた/この問題を解決しました。

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

OS Xでは、ポートまたはfinkを使用して別のperlをインストールすると、アーキテクチャ用にコンパイルされたperlバイナリが得られます(i386 OR 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共有ライブラリを作成する最終手順の1つに障害が発生したが、その時点で、それはすでにlibreadline.aを作っていた作り、これを/ usr/local/libにコピーしました。

ターム:: Readlineの::ヌー:

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

Term :: Readline :: Gnuを使用しているOSXアプリケーション/ユーティリティがわからないため、わかりません。 L氏のソリューションを以下に試してみると何が起こるか見てみましょう.GnuのreadlineライブラリをTerm :: Readline :: Gnuにハードコードするように見えますので、同じことを達成する必要があります。 – Colin

7

Hereがどのように説明する素晴らしい記事です:私はターム:: Readlineの::ヌーのための.tar.gzをダウンロードしてやった後

いくつかの簡単な手順でOPの問題を修正:

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

関連する問題