Debian Linuxシステムでlibcurlを使うコードをコンパイルしています。私の開発マシンではDebian 5が稼働していますが、古いDebian 4システムでもバイナリを使えるようにしたいのです。私は-lcurlを指定した場合、それはlibcurl.so.4にリンクしますが、Debianの4つのシステムのみlibcurl.so.3GCCの共有ライブラリの特定のバージョンにリンクするには
を持っていることがわかり
は、私はどちらかにリンクするGCCを伝えることができるいくつかの方法がありますlibcurl.so.3(Debian 4と5の両方に存在します)またはlibcurl.soだけなので、利用可能なバージョンは何でも使用できますか?
古いDebianでは、libcurl.so.3へのシンボリックリンクはlibcurl.soではありませんか?つまり、デフォルトでは、-lcurlは正しいことではないというのは奇妙に見えます。 –
kastauyra:バージョンはバイナリ互換ではない、または少なくともバイナリ互換性があるとみなすことはできません。したがってリンクすると、バイナリでリンクされたメジャーバージョンが記録されます。新しいシステムでコンパイルすると、バージョン4が必要になり、古いシステムでは動作しません。 (実際には何が記録されているのかは、ライブラリファイルに格納されている文字列であり、通常は「libcurl.so.3」である必要はありません) –