linux中查询动态库版本的命令,linux程序、动态库、静态库内
部添加版本号和编译时间详解...
给程序和库添加版本号和库,有利于维护和升级。
当然你可以在⽂件名上体现,⽐如有个程序叫 yun,⽂件名写为 yun_1.0.2,但这个需要每次⼿动维护,⽽且不能100%确保当前程序就是那个版本。所以,把版本号体现在程序内部,是⼀个不错的选择。
----------------------------- 我是做法分割线 -------------------------------
⼀、可执⾏程序
程序内部定义版本宏,然后 main 函数通过 -v 参数,打印版本号和编译时间,代码如下:
注:__DATE__(编译⽇期), __TIME__(编译时间)
#include
#include
#define VERSION"0.0.2" // 此处每次发布版本要⼿动更新
#define NAME"yun"
static void show_info(char *argv[])
{
if (0 == strcmp("-v", argv[1]))
{
printf("%s version: %s (%s, %s)\n", NAME, VERSION, __DATE__, __TIME__);
return;
}
else if (0 == strcmp("-h", argv[1]))
{
printf("Usage: %s [options]\n", NAME);
printf("Options:\n");
printf(" void\tRun %s\n", NAME);
printf(" -v\tDisplay %s version information\n", NAME);
printf(" -h\tDisplay help information\n");
return;
}
printf("Usage: %s [-v | -h]\n", NAME);
return;
}
int main(int argc, char *argv[])
{
if (2 == argc)
{
show_info(argv);
return 0;
}
printf("Can you feel me?\n");
return 0;
}
运⾏效果:
⼆、动态库、静态库
库不采⽤ -v 这种⽅法,因为不是可执⾏程序。
我们可以给程序添加⼀个版本号字符串,编译成库后使⽤ strings 命令查看,代码如下:
/* add.h */
#ifndef _ADD_H_#define _ADD_H_int add(int a, int b);#endif /* _ADD_H_ */
/* add.c */
#include "add.h"// 此处每次发布版本要⼿动更新const char *LIB_INFO = "libadd version: 0.0.3 (2015-01-30, 08:30)";int add(int a, int b){return (a + b);}
编译及运⾏结果:
/* 静态库 */linux在线命令查询平台
/* 动态库 */
说明:
strings 命令: ⽤于显⽰⽂件中的可打印字符。
grep: ⽤于过滤⽆⽤信息,因为⾃定义的库信息包含 "version",所以就只显⽰包含 "version" 的⾏,否
则其他信息太多不好。此⽅法也可适⽤于可执⾏程序添加版本信息。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论