aarch64なUbuntuでlibncurses5を導入する

困ったことにUbuntu公式のリポジトリにはaarch64向けにはlibncurses5のビルド済みバイナリがない。
i386, amd64 はあるのだけれども。

この問題は、ARMから配布されているビルド済みのgcc(hostはaarch64, targetはarm)を使おうと思う場合にあたってしまう。
誰がそんな変なクロスコンパイルするんだという話もありそうだけど、MacでVM(UTM)入れて、なんてしてたら引っかかってしまった。

そんな経緯でlibncurses5をビルドして用意するということをしてみた。
ただ、思いの外、このライブラリにも落とし穴がある。
要点を記載すると以下の通り。

・libncurses5を持ってきてビルドしても、以下の問題がある
 ・aarch64に対応していないなど、諸々のビルドの問題がある
 ・仮にビルドできたとしても、version symbolが存在せず、実行時に警告が出る(ただ、実行はできる)
・実はx86系で配布されているビルド済みlibncurses5は、ncurses6系列を使ってビルドされている

上記を避けて手順だけまとめたのが以下の通り。

1wget https://ftp.gnu.org/gnu/ncurses/ncurses-6.5.tar.gz
2tar xvf ncurses-6.5.tar.gz
3cd ncurses-6.5
4./configure --with-shared --with-termlib --with-versioned-syms --with-abi-version=5
5make
6sudo cp ./lib/libncurses.so.5.9 /lib/aarch64-linux-gnu/.
7sudo cp ./lib/libtinfo.so.5.9 /lib/aarch64-linux-gnu/.

なお、configureのオプションは本当はもう少し必要だったりする。
x86向けに配布されているものと同じようにしたい場合は、
以下からビルドスクリプトをダウンロードして
CONFARGS, CONFARGS-LEGACY あたりを参考にすると正しいものができる。

https://packages.ubuntu.com/focal/libncurses5

Posted at : 2024-12-31 14:41:02 / Category : none