ま"’s blog

電子工作の部屋?

ラズパイZeroに最新curlをインストール(ラズパイZeroにAlexaをインストールできるか?その4)

この記事は「ラズパイZeroにAlexaをインストールできるか?」のサブ記事です。
「AIYをAlexa化」というカテゴリーを作ってそれに入れたので、これら関連の記事だけを見たい方はこのカテゴリーを選択してください。

はじめに

apt-getでインストールしたcurlでは、Alexa(avs-device-sdk)をビルド(make SampleApp)できなかった&中途半端なバージョンでは出来ても動作しなかったので、最新curlをビルド&インストールすることにしました。

最新curlをゲットしてのビルド&インストール

cd $HOME/sdk-folder/third-party/
git clone https://github.com/curl/curl.git
cd curl
cmake -DUSE_NGHTTP2=yes .
make
sudo make install

解説

HTTP2を有効にする必要があるのですが、最新版(ライブラリのバージョンが4.8.0のリリース)では"configure"スクリプトがなくなっています。「cmakeのGenerate時に変数を設定すればいい」という解決方法を見つけるまで一週間ほどかかりました。それが"-DUSE_NGHTTP2=yes"オプションです。
SSLは必須オプションとのことで、指定は不要でした。
またcmake時の通常オプション「-G "Unix Makefiles"」はデフォルトなので、不要だそうです。

古いライブラリに参照されないようにする

デフォルトではprefixが/usr/localなので/usr/local/bin/curlにインストールされますが、実行時にはなぜかapt-getでインストールされたライブラリをリンクしようとしちゃいます。

$ ldd /usr/local/bin/curl
	/usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so => /usr/lib/arm-linux-gnueabihf/libarmmem-v6l.so (0xb6ee8000)
	libcurl.so.4 => /lib/arm-linux-gnueabihf/libcurl.so.4 (0xb6de6000)
	....

シェアードライブラリの参照順序を変更する方法がわからなかったので、シンボリックリンクの貼り直しで対処することにしました。

cd /lib/arm-linux-gnueabihf/
sudo ln -s /usr/local/lib/libcurl.so.4.8.0 .
sudo rm libcurl.so
sudo ln -s libcurl.so.4.8.0 libcurl.so
sudo rm libcurl.so.4
sudo ln -s libcurl.so.4.8.0 libcurl.so.4

次のステップ

いよいよAlexa(avs-device-sdk)のビルドができるようになりました。