Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 编译后如何更改*.a文件的版本信息_Linux_Unix_Makefile - Fatal编程技术网

Linux 编译后如何更改*.a文件的版本信息

Linux 编译后如何更改*.a文件的版本信息,linux,unix,makefile,Linux,Unix,Makefile,我想知道编译后在Unix中更改*.a文件版本信息的方法(如果可能的话)。 我知道如何在windows中处理Dll文件,但不知道如何在Unix中处理它 谢谢大家! 静态库本身没有版本信息。静态库只是.o文件的存档-它们不会嵌入版本本身,除非您的代码以某种方式发布了保存版本信息的符号 比如: 或者你可以用 char* libFoo_version = "1.0"; 然后使用strings libFoo.a | grep libFoo_version命令和sed来更改版本信息 另一种选择是在存档文件

我想知道编译后在Unix中更改*.a文件版本信息的方法(如果可能的话)。 我知道如何在windows中处理Dll文件,但不知道如何在Unix中处理它


谢谢大家!

静态库本身没有版本信息。

静态库只是.o文件的存档-它们不会嵌入版本本身,除非您的代码以某种方式发布了保存版本信息的符号

比如:

或者你可以用

char* libFoo_version = "1.0";
然后使用
strings libFoo.a | grep libFoo_version
命令和
sed
来更改版本信息


另一种选择是在存档文件中嵌入一个空文件,该文件的名称包含版本信息。YMMV

如果版本是源代码的一部分(例如,字符串常量),那么如果新版本的长度与旧版本的长度相同,您可以简单地使用
sed
对其进行更改。

谢谢,但最终用户如何知道其中包含版本信息?我必须明确地提到它吗?没有通用的方法吗?没有通用的方法。您可能需要提供一个API来检索版本信息。我不这么认为。据我记忆所及,ranlib已经集成到ar中,这让我觉得它并不能解决您的问题。嗨,有人告诉我ranlib可以做这项工作。对吗?谢谢ranlib只是在库中创建一个符号索引(相当于
ar-s
)。你在说什么“版本信息”?哪个工具会显示它?
char* libFoo_version = "1.0";