2012-04-11 5 views
0

私はsqliteライブラリを使用しているソフトウェアパッケージを持っています。この目的のために、sqlite.aを最終的なオブジェクトファイルにリンクして、最終的なパッケージ/バイナリを作成します。LinuxのバイナリにリンクされたSQLiteのバージョンを見つける

一度バイナリを作成すると、そのバイナリにリンクされているSQLiteのバージョンが確認できますか?ビルド環境(3.6.20,3.7.7.1)に複数バージョンのSQLiteがあるので、これを尋ねます。実行中のバイナリの1つで問題が発生したことを確認しましたが、バイナリを作成するために使用したライブラリのバージョンがわかりません。

これは私が取り組んでいるLinux(CentOS5)環境です。

ご協力いただきありがとうございます。

答えて

1

バイナリ自体に、使用しているSQLiteのバージョンを記録するか、宣言することができます。バイナリはコンパイル時にSQLiteの定義からこれを知っています。リンクは静的であるため、作成されるバージョンは使用されるバージョンと同じです。

+0

お返事ありがとうございます。ビルド環境によって変更されたため、この特定のバイナリで何があったのかを知る必要があるため、私がこれを尋ねる主な理由は考えられません。それにもかかわらず、これは確かに将来の実装のアイデアになる可能性があります:) - ありがとう。 – Shrey

0

strings ./foo | grep "3\.[67]\.".のようにすると、ライブラリがコンパイルされたバージョンが見つかることがあります。コード内にこの文字列を出力する関数sqliteを使用していない場合は(sqlite3_libversion())、残念です。リンカーによってコピーされていない可能性があり、存在しない可能性があります。

+0

objdumpとhexdumpを使って、そのような情報が作成されたバイナリの一部であるかどうかを確認しましたが、何の効果もありませんでした。それにもかかわらず、コメントのおかげで。 – Shrey

関連する問題