こんどは Rocky Linux 8 の Visual Studio Code(以下、VSCode) で、KVS のC++用プロデューサーSDK をビルドしてみたいと思います。
以前、コマンドラインでビルドした記事はこちらです。
VSCode の公式サイトから、Windows用、Linux用、Mac用それぞれのパッケージをダウンロードできます。
Rocky Linux は Red Hat 系なので、.rpm 64 bit 版をダウンロードしてインストールします。
※2022/6/13 時点のバージョンは、1.68.0 でした。
FireFox でダウンロードすると、このようなダイアログが表示されるので、「プログラムで開く」「ソフトウェアのインストール(既定)」で「OK」をクリックするとインストールされます。
正常にインストールされると、左上の「アクティビティ」メニューに、Visual Studio Code が追加され、ここから起動することができます。
初回起動すると、日本語パッケージを自動的にインストールしてくれるので、メッセージに従って再起動します。
あとは拡張機能から、CMake Tools をインストールします。このとき一緒に CMake プラグインもインストールされます。
あと、ターミナル(端末)から、KVS のC++用プロデューサーSDK をビルドするために必要そうなパッケージをインストールします。
1 2 3 4 5 6 7 8 9 10 |
sudo dnf install \ cmake \ gstreamer1 \ gstreamer1-devel \ gstreamer1-plugins-base \ gstreamer1-plugins-base-devel \ gstreamer1-plugins-good \ gstreamer1-plugins-bad-free \ gstreamer1-plugins-base-devel \ libcurl-devel |
これで準備はできました。
VSCode から、KVS のC++用プロデューサーSDK をビルドしてみます。
「リポジトリの複製」をクリックして、リポジトリを入力します。
リポジトリのURLに以下のとおり入力してEnterを押します。
https://github.com/awslabs/amazon-kinesis-video-streams-producer-sdk-cpp.git
複製するフォルダを選択するダイアログが表示されるので、適当なフォルダを選択して「リポジトリの場所を選択」ボタンをクリックします。
複製が終わると、VSCode の右下に以下のようなメッセージが表示されるので、「開く」をクリックします。
続いて、コンフィギュアを開始するか聞かれるので、ここは「Not now」をクリック。「Yes」をクリックするとすぐに
初回はコンパイラが選択されていないので、VSCode の一番下のメニューから「No Kit Selected」の部分をクリックして、コンパイラを指定します。
クリックすると、画面上部にコンパイラの選択肢が出るので、「GCC 8.5.0 x86_64-redhat-linux」を選択します。
CMakeLists.txt を右クリックして、一番下の「すべてのプロジェクトの構成」をクリックします。
そうすると、以下のように出力されて、プロジェクトの構成が始まります。
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 37 38 39 40 41 42 |
[proc] Executing command: /usr/bin/gcc -v [main] Configuring folder: amazon-kinesis-video-streams-producer-sdk-cpp-1 [proc] Executing command: /usr/bin/cmake --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -S/work/amazon-kinesis-video-streams-producer-sdk-cpp-1 -B/work/amazon-kinesis-video-streams-producer-sdk-cpp-1/build -G "Unix Makefiles" [cmake] Not searching for unused variables given on the command line. [cmake] -- The C compiler identification is GNU 8.5.0 [cmake] -- The CXX compiler identification is GNU 8.5.0 ~中略~ [cmake] -- Configuring done [cmake] -- Generating done [cmake] -- Build files have been written to: /work/amazon-kinesis-video-streams-producer-sdk-cpp-1/dependency/libkvscproducer/kvscproducer-src/dependency/libkvspic [cmake] [ 11%] Creating directories for 'libkvspic-download' [cmake] [ 22%] Performing download step (git clone) for 'libkvspic-download' [cmake] Cloning into 'kvspic-src'... [cmake] HEAD is now at c832588 Testing images stuff (#172) [cmake] [ 33%] Performing update step for 'libkvspic-download' [cmake] [ 44%] No patch step for 'libkvspic-download' [cmake] [ 55%] No configure step for 'libkvspic-download' [cmake] [ 66%] No build step for 'libkvspic-download' [cmake] [ 77%] No install step for 'libkvspic-download' [cmake] [ 88%] No test step for 'libkvspic-download' [cmake] [100%] Completed 'libkvspic-download' [cmake] [100%] Built target libkvspic-download [cmake] -- Looking for pthread.h [cmake] -- Looking for pthread.h - found [cmake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD [cmake] -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Failed [cmake] -- Check if compiler accepts -pthread [cmake] -- Check if compiler accepts -pthread - yes [cmake] -- Found Threads: TRUE [cmake] -- Found OpenSSL: /work/amazon-kinesis-video-streams-producer-sdk-cpp-1/open-source/local/lib/libcrypto.so (found version "1.1.1g") [cmake] -- Checking for module 'libcurl' [cmake] -- Found libcurl, version 7.68.0-DEV [cmake] -- Bitness 64 bits [cmake] -- Found OpenSSL: /work/amazon-kinesis-video-streams-producer-sdk-cpp-1/open-source/local/lib/libcrypto.so (found suitable version "1.1.1g", minimum required is "1") [cmake] -- Found ZLIB: /usr/lib64/libz.so (found suitable version "1.2.11", minimum required is "1") [cmake] found log4cplus. [cmake] -- Found Log4cplus: /work/amazon-kinesis-video-streams-producer-sdk-cpp-1/open-source/local/lib/liblog4cplus.so [cmake] -- Configuring done [cmake] -- Generating done [cmake] -- Build files have been written to: /work/amazon-kinesis-video-streams-producer-sdk-cpp-1/build |
こんな感じで「Configuring done」、「Generating done」となれば、CMake によるコンフィギュアと、メイクファイルの生成が完了です。
VSCode の左メニューに CMake 拡張機能が追加されているので、これをクリックすると、先ほどの「すべてのプロジェクトの構成」で生成された内容が確認できます。
また、CMAKE: プロジェクトの概要の右にある「・・・」から、CMakeキャッシュ(UI)の編集をクリックすると、CMake Cache Editor が起動します。
CMake Cache Editor では以下のような設定を VSCode の UI で変更できます。今回は GStreamer のプラグインをビルドしたいので、「BUILD_GSTREAMER_PLUGIN」にチェックして、「SAVE」ボタンをクリックします。
変更があると、改めて CMake のコンフィギュアが始まりますので、「Configuring done」、「Generating done」が表示されるまで待ちます。
これで、KVS のC++用プロデューサーSDK のビルド準備が整いました。
VSCode の一番下のメニューから「Build」をクリックするとビルドが始まります。
また、その右にある [all] をクリックすると、ビルドするターゲットを選択することも可能です。また、左にある「CMake:[Debug]」をクリックすると、以下の4つを選択できます。
- Debug 最適化の無効化 – デバッグ情報を含めます。
- Release 速度を最適化 – デバッグ情報を除外します。
- MinSizeRel 最小のバイナリサイズ用に最適化 – デバッグ情報を除外します。
- RelWithDebInfo 速度を最適化 – デバッグ情報を含めます。
今回はすべてビルドでよいので、そのまま「Build」をクリックします。
すると以下のように出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[main] Building folder: amazon-kinesis-video-streams-producer-sdk-cpp-1 [proc] Executing command: /usr/bin/gcc -v [main] Configuring folder: amazon-kinesis-video-streams-producer-sdk-cpp-1 [proc] Executing command: /usr/bin/cmake --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -S/home/kasuga/work/amazon-kinesis-video-streams-producer-sdk-cpp-1 -B/home/kasuga/work/amazon-kinesis-video-streams-producer-sdk-cpp-1/build -G "Unix Makefiles" ~中略~ [build] collect2: エラー: ld はステータス 1 で終了しました [build] //usr/lib64/libssh.so.4: `EVP_KDF_derive@OPENSSL_1_1_1b' に対する定義されていない参照です [build] //usr/lib64/libssh.so.4: `EVP_KDF_ctrl@OPENSSL_1_1_1b' に対する定義されていない参照です [build] //usr/lib64/libssh.so.4: `EVP_KDF_CTX_free@OPENSSL_1_1_1b' に対する定義されていない参照です [build] //usr/lib64/libssh.so.4: `EVP_KDF_CTX_new_id@OPENSSL_1_1_1b' に対する定義されていない参照です [build] collect2: エラー: ld はステータス 1 で終了しました [build] gmake[2]: *** [CMakeFiles/kvs_gstreamer_sample.dir/build.make:105: kvs_gstreamer_sample] エラー 1 [build] gmake[1]: *** [CMakeFiles/Makefile2:257: CMakeFiles/kvs_gstreamer_sample.dir/all] エラー 2 [build] gmake[2]: *** [CMakeFiles/kvs_gstreamer_multistream_sample.dir/build.make:105: kvs_gstreamer_multistream_sample] エラー 1 [build] gmake[1]: *** [CMakeFiles/Makefile2:287: CMakeFiles/kvs_gstreamer_multistream_sample.dir/all] エラー 2 [build] gmake: *** [Makefile:136: all] エラー 2 [build] Build finished with exit code 2 |
エラーで終了してしまいました。
これは、以前コマンドラインからビルドした時と同じ内容で、SDK付属の libssl と libcrypto を削除して、OS付属のものにリンクし直すことでビルドできます。
VSCode のターミナルから、以下のコマンドを実行します。前回とは実行するディレクトリ階層が異なるので注意。
1 2 3 |
rm -rf open-source/local/lib/libssl.* open-source/local/lib/libcrypto.* ln -s /usr/lib64/libcrypto.so.1.1 open-source/local/lib/libcrypto.so ln -s /usr/lib64/libssl.so.1.1 open-source/local/lib/libssl.so |
コマンド実行後、改めて「Build」をクリックすると、無事に全部ビルドできました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[main] Building folder: amazon-kinesis-video-streams-producer-sdk-cpp-1 [build] Starting build [proc] Executing command: /usr/bin/cmake --build /work/amazon-kinesis-video-streams-producer-sdk-cpp-1/build --config Debug --target all -j 8 -- [build] [ 1%] Built target kvs_gstreamer_file_uploader_sample [build] [ 22%] Built target kvspicUtils [build] [ 60%] Built target kvspic [build] [ 69%] Built target kvsCommonCurl [build] [ 82%] Built target cproducer [build] [ 91%] Built target KinesisVideoProducer [build] [ 92%] Linking CXX executable kvs_gstreamer_multistream_sample [build] [ 92%] Linking CXX executable kvs_gstreamer_audio_video_sample [build] [ 92%] Linking CXX executable kvs_gstreamer_sample [build] [ 96%] Built target gstkvssink [build] [ 97%] Built target kvs_gstreamer_sample [build] [ 98%] Built target kvs_gstreamer_audio_video_sample [build] [100%] Built target kvs_gstreamer_multistream_sample [build] Build finished with exit code 0 |
あとの動作確認のやり方は同じなので、こちらの記事を参照ください。
VSCode って、無償でここまでできるのがすごいです。便利。