2012-04-11 64 views
0

我有一個使用sqlite庫的軟件包。爲此,我將sqlite.a鏈接到最終的對象文件以創建最終的包/二進制文件。查找鏈接到Linux中的二進制文件的SQLite版本

有沒有辦法通過它創建一個二進制文件,它可以確認哪個版本的SQLite已經鏈接到該二進制文件?我問這個是因爲我的編譯環境中有多個版本的SQLite(3.6.20,3.7.7.1)。我在其中一個正在執行的二進制文件中發現了一個問題,我不知道使用哪個版本的庫來製作該二進制文件。

這是我正在開發的Linux(CentOS5)環境。

在此先感謝您的幫助。

回答

1

您可以告訴二進制文件本身記錄或聲明它使用的SQLite版本。二進制文件在編譯時從SQLite定義中知道這一點。由於鏈接是靜態的,所建立的版本與所使用的版本相同。

+0

感謝您的回覆。我不認爲這是可能的,我問這個主要的原因是因爲我已經修改了構建環境,我需要知道這是什麼特定的二進制文件。儘管如此,這當然可以成爲未來實施的想法:) - 謝謝。 – Shrey 2012-04-14 05:09:30

0

你也許能夠通過類似於strings ./foo | grep "3\.[67]\.".的方式找到編譯庫的版本。不幸的是,如果你沒有使用sqlite中的任何函數來輸出你的代碼中的字符串(如sqlite3_libversion()),它們可能沒有被鏈接器複製,可能不存在。

+0

我使用了objdump和hexdump來查看這樣的信息是否是這樣創建的二進制文件的一部分,但沒有結果。儘管如此,感謝您的評論。 – Shrey 2012-04-14 05:10:33