我想知道在編譯後在Unix中更改* .a文件的版本信息(如果可能的話)。 我知道如何做到這一點在Windows中的Dll文件 - 但不知道如何在Unix中管理它。如何在編譯後更改* .a文件的版本信息
謝謝大家!
我想知道在編譯後在Unix中更改* .a文件的版本信息(如果可能的話)。 我知道如何做到這一點在Windows中的Dll文件 - 但不知道如何在Unix中管理它。如何在編譯後更改* .a文件的版本信息
謝謝大家!
靜態庫只是.o文件的存檔 - 它們不會自己嵌入版本,除非您的代碼以某種方式發佈了包含版本信息的符號。
像:
int libFoo_version = 0x01000000;
或者你可以使用
char* libFoo_version = "1.0";
事後結合使用類似strings libFoo.a | grep libFoo_version
命令sed
改變的版本信息。
另一種選擇是在存檔中嵌入一個空文件,該文件的名稱包含版本信息。 YMMV
靜態庫本身沒有版本信息。
如果版本是源代碼的一部分(例如,字符串常量),那麼只要使用sed
來更改它,如果新版本的長度與舊版本相同。
嗨, 我被告知ranlib可能會做這項工作。 這是正確的嗎? 謝謝! – rkellerm 2010-02-23 13:15:35
ranlib只是創建庫中符號的索引(相當於'ar -s')。 – 2010-02-23 15:02:58
你在說什麼「版本信息」?哪個工具會顯示它? – 2010-02-23 15:03:31