管理者権限なしでzshビルド:端末処理ライブラリが見つかりません。

管理者権限なしでzshビルド:端末処理ライブラリが見つかりません。

root権限なしでLinuxシステムにZshをインストールしようとしています。ソースtarballをダウンロードし、以下を実行しました。

./configure --prefix=<my_installation_path>

しかし、私は次のような結果を得ます:

構成:エラー:「システムに端末処理ライブラリが見つかりませんでした。これはcursesまたはncursesというライブラリです。システムソフトウェアパッケージに「curses-devel」または「ncurses-devel」というライブラリをインストールする必要があります。

ncursesをインストールします。

私はこのシステムのルートではないので、ncurses手動でダウンロードしてインストールしましたが(github.comも使用./configure --prefix=<my_installation_path>)うまくいくようです。

その後、次のパスを更新しました。

INSTALLATION_PATH='/path/to/installation'
export PATH=$INSTALLATION_PATH/bin/:$PATH
export LD_LIBRARY_PATH=$INSTALLATION_PATH/lib:$LD_LIBRARY_PATH
export CFLAGS=-I$INSTALLATION_PATH/include

そして、Zshを再インストールしようとしましたが、同じncursesエラーが発生しました。私が知っている限り、上記のパス変数は正しい場所を指しており、これをシェルで確認できます。 Zshが認識されないのはなぜですか?ncurses?

答え1

少なくとも1つが欠けているようです。これを渡しているのでCFLAGS=-I/path/to/installation/include、コンパイルスクリプトはヘッダファイルを見つけることができますが、コンパイルスクリプトに()へのリンク先のライブラリを見つけるようにする必要がありますlibncurses.a。インストール手順CPPFLAGSにはCFLAGS

export CPPFLAGS="-I$INSTALLATION_PATH/include" LDFLAGS="-L$INSTALLATION_PATH/lib"

完全なエラーメッセージを読んで、./configureより多くの情報を含むログを確認してください(実行されたコマンドとその出力に関する詳細な履歴がありますconfig.log)。configure

答え2

修正する:

Gilesの回答に従って更新しましたが、CPPFLAGSその間LDFLAGSに問題は消えましたconfigure

ただし、次のプロセス中にエラーが発生しますmake

<INSTALLATION_PATH>/lib/libncurses.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

私もrecompile with -fPIC。どうすればいいですか?ncursesncurses

アップデート2:

私はそれを再コンパイルしましたncurses。今回は以下を行いました。

  • export CXXFLAGS=" -fPIC"
  • export CFLAGS=" -fPIC"

前にあり、次にmake追加されます。これで問題が解決したようです!--enable-shared./configurencursesZsh

関連情報