linux 程序、动态库、静态库内部添加版本号和编译时间详解
发布时间 - 2026-01-10 22:11:46 点击率:次给程序和库添加版本号和库,有利于维护和升级。

当然你可以在文件名上体现,比如有个程序叫 yun,文件名写为 yun_1.0.2,但这个需要每次手动维护,而且不能100%确保当前程序就是那个版本。所以,把版本号体现在程序内部,是一个不错的选择。
----------------------------- 我是做法分割线 -------------------------------
一、可执行程序
程序内部定义版本宏,然后 main 函数通过 -v 参数,打印版本号和编译时间,代码如下:
注:__DATE__(编译日期), __TIME__(编译时间)
#include <stdio.h>
#include <string.h>
#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);}
编译及运行结果:
/* 静态库 */
/* 动态库 */
说明:
strings 命令: 用于显示文件中的可打印字符。
grep: 用于过滤无用信息,因为自定义的库信息包含 "version",所以就只显示包含 "version" 的行,否则其他信息太多不好找。
此方法也可适用于可执行程序添加版本信息。
# 动态库
# 静态库
# 详解linux下查看系统版本号信息的方法(总结)
# Linux7操作系统中如何安装MySQL5.6
# linux服务器操作系统有哪些
# 在VMware虚拟机里安装Linux操作系统
# Linux操作系统的概述与简介
# Linux如何查看操作系统版本号
# 可执行
# 是一个
# 我是
# 太多
# 有个
# 你可以
# 适用于
# 也可
# 我们可以
# 自定义
# 只显示
# 体现在
# 分割线
# 编译成
# 这种方法
# include
# pre
# xhtml
# br
# class
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何配置Horizon来管理队列?(安装和使用)
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
如何构建满足综合性能需求的优质建站方案?
成都品牌网站制作公司,成都营业执照年报网上怎么办理?
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
如何为不同团队 ID 动态生成多个独立按钮
如何用虚拟主机快速搭建网站?详细步骤解析
如何用AWS免费套餐快速搭建高效网站?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
如何在阿里云部署织梦网站?
Laravel如何处理文件下载请求?(Response示例)
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
javascript中的try catch异常捕获机制用法分析
如何快速生成可下载的建站源码工具?
Laravel如何使用Passport实现OAuth2?(完整配置步骤)
Python文本处理实践_日志清洗解析【指导】
如何在万网主机上快速搭建网站?
Android使用GridView实现日历的简单功能
北京网站制作的公司有哪些,北京白云观官方网站?
Laravel Octane如何提升性能_使用Laravel Octane加速你的应用
HTML透明颜色代码怎么让图片透明_给img元素加透明色的技巧【方法】
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
html如何与html链接_实现多个HTML页面互相链接【互相】
Bootstrap整体框架之JavaScript插件架构
BootStrap整体框架之基础布局组件
javascript基于原型链的继承及call和apply函数用法分析
如何在七牛云存储上搭建网站并设置自定义域名?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
如何打造高效商业网站?建站目的决定转化率
西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?
网站制作软件有哪些,制图软件有哪些?
如何在IIS7上新建站点并设置安全权限?
QQ浏览器网页版登录入口 个人中心在线进入
百度浏览器网页无法复制文字怎么办 百度浏览器复制修复
如何快速建站并高效导出源代码?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
html文件怎么打开证书错误_https协议的html打开提示不安全【指南】
详解MySQL数据库的安装与密码配置
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】
如何在建站主机中优化服务器配置?
如何在阿里云购买域名并搭建网站?
详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南
活动邀请函制作网站有哪些,活动邀请函文案?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
打造顶配客厅影院,这份100寸电视推荐名单请查收
微信推文制作网站有哪些,怎么做微信推文,急?
高性能网站服务器配置指南:安全稳定与高效建站核心方案

