GNU工具
文章平均质量分 89
GNU工具
天山老妖
多年私募基金量化IT工程师从业经验,专注于Linux/C++、Qt、Python、量化IT技术,具有丰富的中频、高频量化交易系统开发和实盘交易运维经验,熟悉CTP、盛立REM、易达YD、Xele期货柜台API,宽睿OES、华鑫Tora、中泰XTP股票柜台API。
QuantFabric开源:https://github.com/QuantFabric
展开
-
Hello CMake——Git版本信息
为了自动化管理发布版本,C/C++项目中通常会考虑使用Git版本信息作为程序版本信息。CMake构建项目时获取Git版本信息得核心思路是利用CMake中execute_process函数调用Git命令获取仓库版本状态信息,然后将信息通过add_definitions定义相应宏,在代码中直接使用宏定义即可。第二种方案是将获取的Git版本信息通过file命令输出到一个头文件中,程序需要使用版本信息的,包含头文件并使用对应宏即可。macro(Get_CommitID APP_COMMITID)fi...原创 2022-03-04 00:00:33 · 1317 阅读 · 0 评论 -
Hello CMake——CMake模块
一、find_packge高级功能1、find_package的模式find_package()有Module模式(基本用法)和Config模式(完全用法),其中Module模式是基础,Config模式则提供复杂高级功能。find_package是否使用Config模式可以通过下列条件判断:(1)find_package()中指定CONFIG关键字(2)find_package()中指定NO_MODULE关键字(3)find_package()中使用了不再Module模式下所有支持配原创 2022-02-25 00:00:21 · 717 阅读 · 0 评论 -
GNU开发工具——WireShark网络分析工具
一、WireShark网络分析工具简介1、WireShark简介Wireshark是目前全球使用最广泛的开源网络封包分析软件(前身为Ethereal),由Gerald Combs编写并于1998年以GPL开源许可证发布。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。2、WireShark架构GUI:处理所有的用户输入输出(所有窗体,对话框等)Core:核心模块,通过函数调用将其他模块连接在一起Epan:包分析引擎(WireShark Pack.原创 2022-02-25 00:06:22 · 2112 阅读 · 0 评论 -
Hello Git(九)——GitLab CI持续集成
一、CI持续集成简介1、CI持续集成简介CI(Continuous Integration),即持续集成,是一种可以增加项目可见性、降低项目失败风险的开发实践,其目的在于让产品快速迭代的同时,尽可能保持高质量。每次集成都通过自动化的构建(包括编译、发布、自动化测试)来验证,从而尽快地发现集成错误,只有通过自动测试的代码才能进行后续的交付和部署。CI是团队成员间(产研测)更好地协调工作,更好的适应敏捷迭代开发,自动完成减少人工干预,保证每个时间点上团队成员提交的代码都能成功集成的,可以很好的用于对原创 2022-02-27 00:16:29 · 1844 阅读 · 0 评论 -
Hello Git(八)——GitLab服务搭建
操作系统:RHEL 7.3 WorkStation一、GitLab简介1、GitLab简介 GitLab是一个利用Ruby on Rails开发的开源版本管理系统,是集代码托管、测试、部署于一体的开源git仓库管理软件,可通过web界面来进行访问公开或私人项目。GitLab能够浏览代码,管理缺陷和注释,可以管理团队对仓库的访问,非常易于浏览提交过的版本,并提供一个文件历史库,是目前非常流行的研发版本控制系统。Git:本地版本控制系统工具。Github:全球最大在线代码托管仓库,htt...原创 2022-02-27 00:15:31 · 444 阅读 · 0 评论 -
Hello Git(七)——Git工程实践扩展
一、Git提交日志规范1、Git提交日志模板Git支持对每次提交的日志信息进行规范,可以通过设置提交模板实现。建立一个gitCommitTemplate文件,内容为:#commitmessage包含三部分,header, body和footer,其中header必选,body和footer可选。#type(<scope>):<subject>#<body>#<footer>#type字段包含:#feature:新功能开...原创 2022-02-27 00:14:48 · 1111 阅读 · 0 评论 -
Hello Git(六)——Git钩子
一、Git钩子简介与其它版本控制系统相同,Git也可以在特定的重要动作发生时触发自定义脚本。Git有两种类型的钩子:客户端钩子和服务器端钩子。客户端钩子由诸如提交和合并等操作所调用,而服务器端钩子作用于诸如接收被推送的提交等联网操作。Git钩子都被存储在Git仓库目录(.git)下的hooks子目录中。当git init初始化一个新版本库时,Git 默认会在hooks目录中放置一些示例脚本。示例脚本除了本身可以被调用外,还透露了被触发时所传入的参数。所有的示例脚本都是shell脚本,可以使用Ruby原创 2022-02-27 00:13:46 · 3791 阅读 · 0 评论 -
Hello Git(五)——Git分布式工作流程
一、Git分布式工作流程简介与集中式版本控制系统(CVCS)不同,Git的分布式特性使得开发者间的协作变得更加灵活多样。在集中式系统中,每个开发者就像是连接在集线器上的节点,彼此的工作方式大体相同。 而在Git中,每个开发者同时扮演着节点和集线器的角色,即每个开发者既可以将自己的代码贡献到其它的仓库中,同时也能维护自己的公开仓库,让其他人可以在其基础上工作并贡献代码。 因此,Git的分布式协作可以为项目和团队衍生出各种不同的工作流程。常见的Git分布式工作流程有集中式工作流程、集成管理者工作流程、司令官原创 2022-02-27 00:13:26 · 319 阅读 · 0 评论 -
Hello Git(四)——Git分支管理策略
一、Git版本管理的挑战Git是非常优秀的版本管理工具,但面对版本管理依然有非常大得挑战。工程开发中,开发者彼此的代码协作必然带来很多问题和挑战:A、如何开始一个Feature开发,而不影响其它Feature?B、由于很容易创建新分支,分支多了如何管理,时间久了,如何知道每个分支是干什么的?C、哪些分支已经合并回了主干?D、如何进行Release的管理?开始一个Release的时候如何冻结Feature, 如何在Prepare Release的时候,开发人员可以继续开发新的功能?E、原创 2022-02-27 00:12:51 · 708 阅读 · 0 评论 -
Hello Git(三)——Git常用操作
一、Git仓库操作1、Git仓库创建git init在当前目录中初始化Git仓库git init [project-name]创建一个新目录并初始化仓库初始化git仓库会默认创建一个mater分支,创建名为.git的子目录,内含初始化Git仓库中所有的骨干文件,此时仓库中的文件还没有被跟踪。通过git add命令来实现对指定文件的跟踪,然后执行git commit提交。git add .git commit -m 'initial project version'原创 2022-02-27 00:12:19 · 386 阅读 · 0 评论 -
Hello Git(二)——Git内部实现机制
一、Git仓库内部实现简介Git本质上是一个内容寻址(content-addressable)的文件系统,根据文件内容的SHA-1哈希值来定位文件。Git核心部分是一个简单的键值对数据库(key-value data store)。向Git数据库插入任意类型的内容,会返回一个键值,通过返回的键值可以在任意时刻再次检索(retrieve)插入的内容。通过底层命令hash-object可以将任意数据保存到.git目录并返回相应的键值。Git包含一套面向版本控制系统的工具集,包括高级命令和底层命令。高级命原创 2022-02-27 00:10:55 · 1053 阅读 · 0 评论 -
Hello Git(一)——Git基础
一、版本控制系统1、版本控制系统简介版本控制系统(VCS,Version Control Systems)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统分为:A、本地版本控制系统(LVCS,Local Version Control Systems)B、集中式版本控制系统(CVCS,Centralized Version Control Systems)C、分布式版本控制系统(DVCS,Distributed Version Control Sys原创 2022-02-26 00:13:52 · 351 阅读 · 0 评论 -
GNU开发工具——Bochs模拟器
一、Bochs简介1、Bochs简介Bochs是一款X86硬件平台的开源模拟器。VMware、Virtual PC、VirtualBox等虚拟机软件采用虚拟化技术,部分指令直接交给硬件执行,而Bochs模拟器完全靠软件模拟来实现,从启动到重启,包括PC外设键盘、鼠标、VGA卡、磁盘、网卡等全部由软件来模拟,因此Bochs模拟器非常适合开发操作系统,其自带bochsdbg调试器使得调试操作系统非常容易。2、Bochs源码安装下载2.6.8版本源码:Bochs x86 PC emulator原创 2022-02-26 00:01:13 · 12295 阅读 · 0 评论 -
GNU开发工具——GDB快速入门
一、GDB简介GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。GDB能够跟踪程序的执行,也能够恢复程序崩溃前的状态。GDB常规功能如下:A、自定义程序的启动方式(指定影响程序运行的参数)B、设置条件断点(在条件满足时暂停程序的运行)C、回溯检查导致程序异常结束的原因(Core Dump)D、动态改变程序的执行流(定位问题的辅助方式)二、GDB功能1、core dump核心转储文件(Core Dump)是进程内存的原创 2022-02-25 00:04:13 · 5366 阅读 · 0 评论 -
GNU开发工具——GNU Binutils快速入门
一、GNU Binutils简介GNU Binutils(GNU二进制工具集),即GNU Binary Utilities,是一套用于创建、管理和维护二进制目标文件的工具集合,包括addr2line、ar、gprof、nm、objcopy、objdump、ranlib、size、strings、strip。Binutils官网地址:https://www.gnu.org/software/binutils/二、GNU Binutils工具使用1、addr2lineaddr2line用于原创 2022-02-25 00:03:51 · 7508 阅读 · 0 评论 -
GNU开发工具——SVN简介
一、SVN简介SVN是Subversion的简称,是一个开放源代码的集中式版本控制系统,是CVS的改进版,采用了分支管理系统,设计目标就是取代CVS。1、SVN服务器SVN服务器支持linux和windows,有两种运行方式:独立服务器和基于Apache运行。SVN的版本数据存储方式有两种:BDB(事务安全型表类型)和FSFS(无数据库的存储系统)。常见的SVN服务器软件:VisualSVN(windows)、subversion(CentOS)下载地址:http://subvers原创 2022-02-25 00:02:55 · 4896 阅读 · 0 评论 -
Hello CMake——CMake构建Qt工程实践
一、CMake构建Qt工程1、Qt工程源码创建Migration目录,在目录下创建main.cpp文件:#include<QApplication>#include<QLabel>intmain(intargc,char*argv[]){QApplicationapp(argc,argv);QLabellabel(QString("HelloQt%1!").arg(int(QT_VERSION>>16))......原创 2022-02-25 00:00:36 · 4944 阅读 · 2 评论 -
Hello CMake——CMake进阶
一、CMake基础指令1、cmake_minimum_requiredcmake_minimum_required (VERSION 2.8)cmake_minimum_required用于规定cmake程序的最低版本,可选。如果CMakeLists.txt文件中使用了高版本cmake特有的一些命令时,就需要使用cmake_minimum_required对CMake进行版本限制,提醒用户升级到相应版本后再执行cmake。2、projectproject(project_name)原创 2022-02-24 09:29:42 · 1699 阅读 · 0 评论 -
Hello CMake——CMake快速入门
一、CMake简介不同Make工具,如GNU Make、QT的qmake、微软的MS nmake、BSD Make(pmake)等,遵循着不同的规范和标准,所执行的Makefile格式也不同。如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用Make工具,必须为不同的Make工具编写不同的Makefile。CMake是一个比Make工具更高级的编译配置工具,是一个跨平台的、开源的构建系统(BuildSystem)。CMake允许开发者编写一种平台无关的CMakeList.txt文件来定制.原创 2022-02-24 09:28:52 · 873 阅读 · 0 评论