Debian Linuxシステムでlibcurlを使用するコードをコンパイルしています。私の開発マシンではDebian 5を実行していますが、古いDebian 4システムでもバイナリを使用できるようにしたいと思っています。
-lcurlを指定すると、libcurl.so.4にリンクしますが、Debian 4システムにはlibcurl.so.3しかありません。
Libcurl.so.3(Debian 4と5の両方に存在)またはlibcurl.soにリンクするようにGCCに指示できる方法はありますか?
リンカのコマンドラインで-lの代わりに実際の.soファイルを渡すことができ、必要な処理を実行する必要があります。
「-libcurl」を使用する代わりに「-l:libcurl.so.3」を使用してください。もちろん「-L _ installed_path _」も使用してください
そのための正しい方法は、--filter
および--auxiliary
リンカのフラグ。
それらはあまり文書化されていませんが、インストールされているマシンに応じて、同じライブラリの異なるバージョンからシンボルをロードできるはずです。
.3にリンクするプロジェクトのローカルシンボリックリンクを作成する場合は、コンパイル時に-Lを使用できます。名前の衝突が発生するかどうかはわかりませんが、念のためlibcurl-old.soといつでも呼ぶことができます。