前回、Amazon Linux 2 で KVSのC++用プロデューサーSDKをビルドしたら、思いのほかすんなりできた。
ただ、カメラがローカルネットワークにあり、プライベートIPしか持っておらず、EC2 と通信するのがしんどいので、ローカルのRocky Linux 8に入れてみようと思ったら、すんなりできなかったのでメモ。
まずは前回と同様、必要そうなパッケージを入れておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
sudo dnf install \ cmake \ m4 \ git \ openssl-devel \ openssl-libs \ gstreamer1 \ gstreamer1-devel \ gstreamer1-plugins-base \ gstreamer1-plugins-base-devel \ gstreamer1-plugins-good \ gstreamer1-plugins-bad-free \ gstreamer1-plugins-base-devel \ libcurl \ libcurl-devel \ libssh-devel |
Amazon Linux 2 だと、cmake3 だったけど、こっちでは cmake なので注意。
あと、yum も使えるけど、dnf コマンドが標準。
Development Tools も入れておく。
1 |
sudo dnf groupinstall 'Development Tools' |
適当なディレクトリを作って、git cloneからビルドまでやってみる。
1 2 3 4 5 6 7 8 |
mkdir work cd work git clone https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git cd amazon-kinesis-video-streams-producer-sdk-cpp/ mkdir build cd build cmake .. -DBUILD_GSTREAMER_PLUGIN=ON make |
cmake までは通るんだけど、make は libssh関連のエラーが表示されて通らない。
どうやら、Redhat系(CentOSやRocky Linuxなど)のバージョン8で用意されているOpenSSL関連のバージョンと、KVSプロデューサーライブラリSDKに含まれるOpenSSL関連のバージョンが合っていないみたい。
cmake の途中で以下のようなメッセージが出ていた。
1 2 3 4 5 |
Operating system: x86_64-whatever-linux2 Configuring OpenSSL version 1.1.1g (0x1010107fL) for linux-x86_64 Using os-specific seed configuration Creating configdata.pm Creating Makefile |
これを見ると、OpenSSLのバージョンが1.1.1gとある。以下のディレクトリに、libopensslのソースが同梱されていて、それをビルドしているみたい。
amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/libopenssl/build/src/project_libopenssl/
先ほどのメッセージに続いて、以下のようなメッセージが表示される。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
********************************************************************** *** *** *** OpenSSL has been successfully configured *** *** *** *** If you encounter a problem while building, please open an *** *** issue on GitHub <https://github.com/openssl/openssl/issues> *** *** and include the output from the following command: *** *** *** *** perl configdata.pm --dump *** *** *** *** (If you are new to OpenSSL, you might want to consult the *** *** 'Troubleshooting' section in the INSTALL file first) *** *** *** ********************************************************************** [ 66%] Performing build step for 'project_libopenssl' ar: creating apps/libapps.a ar: creating libcrypto.a ar: creating libssl.a ar: creating test/libtestutil.a [ 77%] Performing install step for 'project_libopenssl' *** Installing runtime libraries install libcrypto.so.1.1 -> /root/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib/libcrypto.so.1.1 install libssl.so.1.1 -> /root/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib/libssl.so.1.1 ~中略~ [100%] Built target libkvspic-download -- Found OpenSSL: /root/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib/libcrypto.so (found version "1.1.1g") -- Bitness 64 bits -- Found OpenSSL: /root/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib/libcrypto.so (found suitable version "1.1.1g", minimum required is "1") found log4cplus. -- Checking for module 'gstreamer-app-1.0' -- Found gstreamer-app-1.0, version 1.16.1 -- Configuring done -- Generating done -- Build files have been written to: /root/amazon-kinesis-video-streams-producer-sdk-cpp/build |
どうやら、OpenSSL 1.1.1g のライブラリがビルド用のライブラリディレクトリに配置されて、それを使ってビルドするみたい。
一方で Rocky Linux 8.5 で提供されているのは、OpenSSL 1.1.1k 。
この状態で make すると以下のエラー。
1 2 3 4 5 6 7 8 9 |
~中略~ //usr/lib64/libssh.so.4: `EVP_KDF_derive@OPENSSL_1_1_1b' に対する定義されていない参照です //usr/lib64/libssh.so.4: `EVP_KDF_ctrl@OPENSSL_1_1_1b' に対する定義されていない参照です //usr/lib64/libssh.so.4: `EVP_KDF_CTX_free@OPENSSL_1_1_1b' に対する定義されていない参照です //usr/lib64/libssh.so.4: `EVP_KDF_CTX_new_id@OPENSSL_1_1_1b' に対する定義されていない参照です collect2: エラー: ld はステータス 1 で終了しました make[2]: *** [CMakeFiles/kvs_gstreamer_audio_video_sample.dir/build.make:105: kvs_gstreamer_audio_video_sample] エラー 1 make[1]: *** [CMakeFiles/Makefile2:202: CMakeFiles/kvs_gstreamer_audio_video_sample.dir/all] エラー 2 make: *** [Makefile:136: all] エラー 2 |
この問題について、Web検索しても解決策がわからない・・・。
いくつかヒットしましたが、結局どうしたらいいのかわからない。
https://github.com/openssl/openssl/issues/11471
https://github.com/kingToolbox/WindTerm/issues/491
残念。いつか頑張ろう。