Linux
文章平均质量分 80
见牛羊
化繁为简
展开
-
如何用Shell写一个启动脚本
通常情况下,我们在Linux下运行一个编译好的程序,只需要在可执行文件的路径下直接运行即可。但随着程序变得复杂,编译选项的增多,使用库的增加以及对可执行程序输入的参数变多,直接执行的过程变得比较麻烦。这时可以写一个启动的脚本来一键拉起程序。下面我们来看下如何用shell来创建一个拉起程序的脚本。原创 2024-05-28 17:22:39 · 588 阅读 · 0 评论 -
Yaml配置文件读取方法
另外,上面提到的类型问题,在这里用.as来体现,将对应的配置文件中的值,读入成程序中期望得到的值的类型,这里test_name希望读入为string。在日常的代码中,有一些值是配置文件中定义的,这些值可以根据用户的要求进行调整和改变。这样开放程序给用户时,就可以不必开放对应的源码,只开放yaml格式的配置文件即可。但是读入之后,其实是有对应需要的类型的,比如is_debug读入后需要时bool类型,test_time读入之后需要是int类型。我们先写一个简单的配置文件,然后将其中的值读入到程序中。原创 2023-08-24 17:21:52 · 863 阅读 · 0 评论 -
CMakeLists 写法总结
之前简单介绍了makefile的写法,但实际工程中基本不会手写makefile,通常情况是会写一个CMakeLists甚至是多层多个CMakeLists来构建整个工程。关于makefile和CMakeLists的关系:make命令实际上是按照makefile中的内容来执行的,而CMakeLists就是用来生成makefile的,是cmake命令按照CMakeLists中的内容生成makefile文件。原创 2023-04-08 22:17:56 · 3089 阅读 · 1 评论 -
Linux定时器2
1. POSIX定义的定时器有了上一篇关于setitimer定时器的介绍,相信Linux下定时器的用法已经有了基本了解。我个人在使用setitimer定时器的时候,有一个非常头疼的问题,就是setitimer定时器不能设置多个。严格意义上讲,setitimer定时器只能按照时间处理的类别,分别设置三种定时器,即ITIMER_REAL,ITIMER_VIRTUAL和ITIMER_PROF三类,具体解释见上一篇博客。但这非常限制Linux下定时器的使用。解决方法,就是用POSIX下定义的定时器。可以把P原创 2021-11-26 15:02:40 · 2106 阅读 · 0 评论 -
Linux定时器1
目录1.itimerval-定时器的基本时间单元2.setitimer——创建定时器3.简单实例1.itimerval-定时器的基本时间单元首先要理解itimerval结构体,这是组成定时器的基本时间单元。关于timeval结构体,上一篇博客有讲到,是由秒时间和微秒时间组成的。这里it_interval表示的是一个timeval类型的时间,这个时间是创建的定时器的周期性。即如果这一时间设置为5s,则该定时器每5s触发一次。Itvalue也是timeval类型的时间,表示首次倒计时时距离定原创 2021-11-17 18:37:28 · 674 阅读 · 0 评论 -
Linux下有关时间的函数:time,times,clock,gettimeofday等
因为项目需要,所以把Linux和windows下时间及计时器相关的内容都刷了一遍。终于抽出时间总结一下。目录1. 时间的概念2. 获得时钟时间的函数2.1 时钟时间的存储类型2.2 time函数2.3 gettimeofday函数3. 获得程序运行的时间(即进程时间)3.1 进程时间的存储类型3.2 times函数3.3 clock函数4. 补充说明1. 时间的概念首先理解时钟时间,也叫做墙上时钟时间,可以简单理解为宏观上经过的时间。细究起来就是进程运行的原创 2021-10-14 14:19:58 · 5596 阅读 · 0 评论 -
Linux使用gcc生成与使用动态库与静态库
1. 动态库与静态库的区别能够自己生成库文件并使用自己的库文件,对理解一个大型的工程以及模块开发是很有好处的。事实上,我们进行模块开发的时候,往往是接触不到主程序的,开发的模块通常都是打包成库文件供他人使用的。库文件分为动态库与静态库,动态库一般是以.so为结尾的文件,静态库一般以.a为结尾。动态库和静态库在编译过程中的区别是在链接的时间,动态库是在程序执行的时候被链接的,而静态库是在编译过程的链接阶段被链接的。这意味着,使用动态库时,库必须和可执行程序同时存在,不能被删除。而使用静态库时,在链..原创 2021-09-02 19:42:56 · 322 阅读 · 0 评论 -
C++编译过程详述
想总结一下这个问题是我突然有一天好奇编译头文件和编译头文件对应的源文件有没有区别,因为写makefile的时候依赖即可以写头文件,又可以写源文件。在网上查了半天,估计我的这个问题比较stupid,也没有明确的回答。索性顺藤摸瓜看了看C++的编译过程,虽然之前大致有个了解,但不够仔细。这一看发现,区别肯定是有的(尽量编译源文件而不要尝试编译源文件对应的头文件)。但更重要的是,把编译过程清楚捋一遍,解释了我之前不少的疑惑。而学c++的时候上手就是vc6.0,对理解编译过程太不友好。所以还是应该有个全面的认识。(原创 2021-08-11 12:57:25 · 676 阅读 · 0 评论 -
Makefile编写方法小结
目录1.基本写法基本写法Makefile的编写方便了在linux下编译大型的C/C++的程序,同时,Makefile的写法相对灵活,我们从最简单的方法入手。最简单的方式其实就是原始的gcc或者g++的语法,但是要明确makefile最最基本的语法规则。Target … : prerequisites …Command1Command2…这个格式必须使用,即编译的目标,冒号,编译目标的依赖执行的操作下面我们简单写一个main函数,其调用了加法和减法器中的函数。具.原创 2020-12-25 14:36:05 · 2400 阅读 · 0 评论