次の質問 アプリケーションは実行時に共有ライブラリの異なるバージョンにどのように解決されますか? 、使用するライブラリのバージョンをリンクコマンドラインで指定する方法を知りましたか?
私が持っているとしましょう
libmy.so.1.0
libmy.so.1 -> libmy.so.1.0
libmy.so.2.0
libmy.so.2 -> libmy.so.2.0
libmy.so -> libmy.so.2
実行可能ファイルとリンクするライブラリを指定する通常の方法では、使用するバージョンが表示されません。さらに、最新バージョンとリンクしたいと思う可能性が非常に高いです。したがって、ほとんどの場合、通常の回線は正常に機能します。
gcc app.o -lmy -o app
ライブラリのバージョン1を使用する必要があるapp
をリンクするコマンドラインは何ですか?
リンカはファイル名も受け入れることができます
gcc app.o -l:libmy.so.1 -o app
man ld
から:
-l namespec
-library = namespec
namespecで指定されたアーカイブまたはオブジェクトファイルをリンクするファイルのリストに追加します。このオプションは何度でも使用できます。 namespecの形式が:filenameの場合、ldはライブラリパスでfilenameというファイルを検索します。それ以外の場合は、ライブラリパスでfilenameというファイルを検索します。 libnamespec.a。
古いバージョンではサポートされていないことに気付いたので、システムのman ld
-l
または--library
オプションを確認してください。
フルネームを記載したファイルにリンクすることもできます
gcc app.o /mylibpath/libmy.so.1 -o app