C++ 全栈知识体系C++ 全栈知识体系
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
✿导航
  • 基础
  • 函数
  • 知识点
  • IO框架
  • 新版本特性
  • 数据库原理
  • SQL语言
  • SQL - MySQL
  • NoSQL - Redis
  • NoSQL - ElasticSearch
  • 算法基础
  • 常见算法
  • 领域算法
  • 分布式算法
  • 数据结构与算法
  • 计算机网络
  • 操作系统
  • 计算机组成
  • 开发
  • 测试
  • 架构基础
  • 分布式系统
  • 微服务
  • 中间件
  • 概念
  • 理论
  • 架构设计原则
  • 设计模式
  • 协议
  • 技术选型
  • 编码规范
  • 流水线构建 - CI/CD
  • 知识点 - Linux
  • 网站 - Nginx
  • 容器化 - Docker
  • 容器编排 - Kubernetes
  • 服务网格 - Service Mesh Istio
  • 常用快捷键 - Shortcut
  • 工具使用 - Tools
  • 开源项目
  • 学习项目
  • 个人项目
  • 项目开发
  • 项目Idea
  • 并发
  • 部署
  • 分布式
  • 知识
  • 问题
  • 编程语言与技术
  • 系统与架构
  • 软件开发实践
  • 数据处理与应用设计
  • 个人
  • 产品
  • 团队
  • 知识体系
  • Vue
关于
  • 开源项目

    • libco

      • libco - 协程学习
    • ButtonRPC

      • ButtonRPC - rpc基础
      • ButtonRPC - 框架解析
      • ButtonRPC - 编程实现
    • Tars

      • Tars - 简介
      • Tars - 框架学习
      • Tars - Cpp开发
      • Tars - Go开发
      • Tars - Docker部署
      • Tars - Gateway部署
  • 学习项目

    • hmdp(Redis实战项目)

      • hmdp - 概览
      • hmdp - 短信登录
      • hmdp - 商户查询缓存
      • hmdp - 秒杀优化
      • hmdp - 分布式锁
      • hmdp - Redission
      • hmdp - Redis消息队列
      • hmdp - 优惠卷秒杀
      • hmdp - 附近商户
      • hmdp - UV统计
      • hmdp - 用户签到
      • hmdp - 好友关注
      • hmdp - 达人探店
    • SSM(Spring+SpringMVC+MyBatis)

      • SSM - Spring框架学习
      • SSM - IOC/DI配置管理第三方bean
      • SSM - Spring整合
      • SSM - SpringAOP
      • SSM - SpringMVC 基础
      • SSM - SpringMVC 应用
      • SSM - Maven高级
      • SSM - SpringBoot
      • SSM - MyBatisPlus
  • 个人项目

    • person - 概述
  • 项目开发

    • 项目开发 - C++开源项目推荐
    • 项目开发 - 整体开发流程
    • 项目开发 - 优化项目内容
    • 项目开发 - 注意事项
    • 项目开发 - 统一建模语言UML类图
  • Idea

    • Idea - 思维框架图
    • Idea - 常用技术检索
    • Idea - 小技巧tips
    • Idea - 编程中的tips

person - build_lib

用于编译生成第三方库的头文件和so,进一步二次封装成个人库,便于统一使用。

  • 整体框架
  • 主要构建逻辑
  • 编译环境要求
  • 容器方式构建
  • 构建过程示意

整体框架

动态库制作

主要构建逻辑

  1. 通过build.sh脚本执行第三方库和个人库的build过程;
  2. build.sh里首先会解析3part.xlsx文件,得到第三方组件列表和变量信息的内容;
  3. build_3partlib中包含多个文件夹,文件夹内是对应库的源文件,build_3partlib.sh 是第三方库的生成的主要脚本;
  4. build_comlib中包含StiBel个人库的源文件,包含Common、Data、JSON等,主要是对现有库进行二次封装,便于使用;
  5. 最终生成的头文件和库文件,会放到output文件夹下的include/3partlib(comlib)、lib/3partlib(comlib) 中,并最终打包成 StiBel_20210627.tar.gz 格式的文件。

编译环境要求

  • gcc : 9.1.0
  • Python : 3.7.10
  • cmake : 3.14.5

容器方式构建

容器构建方式:

  1. 主要依赖构建镜像:docker.io/klc407073648/centos_build_lib:v3.0,里面已经集成构建所需依赖。

  2. 具体执行过程:

cd /home/myprj/

git clone git@github.com:klc407073648/build_lib.git

docker run -it -d -v /home/myprj/build_lib:/home/tools/build_lib --name build_lib_0 docker.io/klc407073648/centos_build_lib:v3.0 /bin/bash

docker exec -it build_lib_0 bash

cd /home/tools/build_lib/build

chmod 777 *.sh
dos2unix *.sh

./build.sh
  • 最终执行完毕会显示:

    [100%] Linking CXX executable ../../../../../deploy/comlib/JSON/JsonUtilTest
    [100%] Built target JsonUtilTest
    check build_examples success
    build_examples end
    build.sh MAIN end
    
  • 生成的文件:

    • /home/tools/build_lib/output 下 StiBel_V2.1.1.tar.gz
  1. 使用方法
    • 参考 examples下的CMakeLists.txt

构建过程示意

第三方库构建:

  • 得到构建的组件信息,根据build_3partlib_list内容构建所需组件

第三方库构建

第三方库构建:

  • 得到构建的组件信息,根据build_comlib_list内容构建所需组件

个人库构建

测试第三方库:

[root@68214022c8f0 output]# cd ../examples/deploy/3partlib/jsoncpp/
[root@68214022c8f0 jsoncpp]# pwd
/home/tools/build_lib/examples/deploy/3partlib/jsoncpp
[root@68214022c8f0 jsoncpp]# ./jsoncppTest
{"uploadid": "teststr","code": 100,"msg": "","files": ""}
1
100
teststr

测试个人库:

[root@68214022c8f0 /]# cd /home/tools/build_lib/examples/deploy/comlib/Commom/
[root@68214022c8f0 Commom]# ./ThreadPoolTest
createThreads() begin
run() begin
run() begin
createThreads() end
Last Updated:
Contributors: klc407073648