linuxにてc++プログラムの実行ファイルを他環境(OSは同じ)に持ってってリビルドせずに動作させたかったです。
その際にlddで表示される依存関係のある共有ライブラリを全部コピーして他環境にもっていけば動くと考え、
1.実行ファイルとlddで表示される依存関係のある共有ライブラリを他環境のコピー
2.他環境にてlddした際not foundがない状態に環境パスを通す
という作業を行いました。
結果、プログラム自体は動作するが、正常に動作しない。
aptでパッケージを追加インストールすると正常に動作する。という結果になりました。
前置きが長くなりましたが、
lddで表示される共有ライブラリ == プログラムを動作するのに必要なすべてのライブラリ
ではないということなのでしょうか?
また、実行ファイルだけもってって動作させたい場合、
静的リンク以外だと地道に必要なライブラリコピーしてやるしかないものなのでしょうか?
もう少し具体的に書くと以下のような状況です。
1.gstreamerを使ってビルドされたopencv3.4のvideocaptureを使ったプログラムを作成
2.作ったプログラムにldd.表示された共有ライブラリをすべて他環境にコピー
3.他環境でプログラムにldd,not foundがないように環境パスを通す。
4. 実行するとGStreamer: your gstreamer installation is missing a required pluginとなりvideocaptureが動かない
5. aptでgstreamer関連のパッケージをインストールすると動作する
回答2件
あなたの回答
tips
プレビュー