私が作業している組み込み環境には、次のファイルがあります。
lrwxrwxrwx 1 root root 19 Aug 23 2016 /usr/lib/x86_64-linux-gnu/libjsoncpp.so.1 -> libjsoncpp.so.1.7.4
-rw-r--r-- 1 root root 213728 Aug 23 2016 /usr/lib/x86_64-linux-gnu/libjsoncpp.so.1.7.4
実行可能ファイルをに関連付ける必要があるときに-ljsoncpp
特別というファイルを探しているようですlibjsoncpp.so
。上記にはこのファイル(symlink)がないことに注意してください。
Q:標準命名規則に従って正しい共有ライブラリシンボリックリンクを生成するユーティリティはありますか?つまり、上記の2つのファイルが与えられたときにシンボリックリンクを生成するユーティリティはありますか?
lrwxrwxrwx 1 root root 19 Aug 23 2016 /usr/lib/x86_64-linux-gnu/libjsoncpp.so -> libjsoncpp.so.1
?
を使用してファイルを生成できることを知っていますが、誤って聞いたコメントを聞き、ln -s...
これを行うLinuxユーティリティがあると信じていました。その場合は、手動で行うよりも、既存の標準/広く使用されているツールに従うことをお勧めします。つまり、タイプミスなどのpebkacエラーを避けるために、私はそのようなツールへのオンライン参照を見つけることができず、私が誤って聞いた元のソースはもう利用できません。
答え1
リンカーで使用されるバージョン番号のないシンボリックリンク.so
は、通常、ライブラリのインストールプロセスの一部として生成されます。つまり、プロジェクトのMakefile
、CMake または他のビルドツールによって生成されます。
ディストリビューションは通常、ライブラリを別々のランタイムパッケージと開発パッケージに分割します。バージョンが指定されていない.so
パッケージは、ライブラリに接続するときにのみ使用されるためです。
最善の解決策は、ライブラリを提供するランタイムパッケージに付属の開発パッケージをインストールすることです。出力の日付/サイズ/バージョンで見ると、Debian Busterからインポートされたようls
ですlibjsoncpp
。したがって、あなたのケースに適したソリューションはインストールすることです。パッケージlibjsoncpp-dev
。