![](https://img-blog.csdnimg.cn/20200727141710153.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
【工程项目经验】
文章平均质量分 79
本专栏主要总结了在博主多年工作中的工程化项目经验,包括Makefile,C,linux, VS等,对于IT入门和提升非常实用。当前本专栏已经包含一些高质量和深度的文章,后面会一直更新。
特别说明:
(1)订阅博主就能看博主全部的付费专栏和1000+篇文章。
(2)专栏文章都是多年经验总结,绝对干货!
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
飞翔的鲲
一名音视频领域coder,喜欢深入钻研各种新技术(编解码、图像处理、算法优化等),擅长Matlab,Python,C编程。
CSDN明星博主,认证博客专家,视频、Matlab领域优质创作者。目前专注于音视频编解码和AI技术领域,开源分享,不忘初心,追求卓越!
欢迎订阅我的付费专栏,每篇都是博主的多年工作经验总结和呕心之作,任何问题都可以私信博主,必给您答疑解惑!希望我的博文可以帮助到你~
展开
-
【Tools系列】利用性能分析工具valgrind+KCachegrind分析
DATE: 2020.7.24文章目录1、简述2、KCachegrind下载3、分析过程3.1、安装valgrind和KCachegrind3.2、调试文件3.3、利用valgrind生成性能日志3.4、利用kcachegrind可视化1、简述本文讲述如何应用callgrind和kcachegrind进行性能分析。该工具可以方便分析出可执行文件函数的执行时间及函数调用关系。主要参考:性能分析工具使用-callgrind+kcachegrind2、KCachegrind下载KCachegrind原创 2020-07-23 22:21:23 · 1198 阅读 · 0 评论 -
【开源项目】全平台编译模板MakefileSample
DATE: 2020.6.22本文目录1、参考2、全平台编译脚本3、README4、模板开源地址1、参考【makefile】makefile工程编译模板【makefile系列】多平台编译脚本以及makefile自动化编译总结【PE&Tools】GnuWin32使用以及windows下gnu makefile编写2、全平台编译脚本MakefileSample: 本编译脚本模板旨在建立全平台(Windows,Linux,ARM,Mac,IOS和Android)的编译方法,通过makefi原创 2020-06-22 22:47:59 · 485 阅读 · 0 评论 -
【工程化系列】Windows平台下为可执行文件或动态库dll添加版本信息
Date: 2017/9/22 平常我们可以看到在Windows可执行文件中,右键属性中含有文件版本,文件名称和版本等信息,本文讲述怎么添加这些信息。方法一:VS工程中建立资源文件,编译即可方法二:MinGW或者Cygwin环境下为dll或exe添加版本信息1、打开cmd,输入:call "%VS120COMNTOOLS%../../VC/vcvarsall.bat"原创 2017-09-22 22:16:18 · 2109 阅读 · 0 评论 -
【PE】Windows平台命令行中使用vcvarsall.bat配置编译环境
###Date: 2017/9/20%VS140COMNTOOLS%/VC下就有vcvarsall.bat,用于生成命令行编译环境。如果要在命令行生成 32位代码,就执行vcvarsall x86如果要在32位系统下生成64位代码,就执行vcvarsall x86_amd64如果要在64位系统下生成32位代码,就执行vcvarsall x86或vcvarsall amd6...原创 2017-09-20 18:20:24 · 16108 阅读 · 6 评论 -
【工程化系列】通过SecureCRT远程登录telnet连接虚拟机的linux系统(CentOS/Ubuntu)
Date: 2017/9/17【Tag: 工程项目积累】Author: SoaringLee 一、 题记 周末在家里闲来无事,想着之前安装了SecureCRT,就尝试着利用这个软件telnet连接虚拟机中的linux系统。之前虚拟机VMvare Workstation里安装的是CentOS,现在尝试采用桌面级linux系统Ubuntu进行测试。二、准备材料虚拟机:原创 2017-09-17 08:59:41 · 2445 阅读 · 0 评论 -
【工程化系列】汇编代码中无法链接的外部符号的几个原因分析
在汇编编译和链接时,有时会遇到无法链接的外部符号这样的bug。这里给出几个可能的原因。一个最主要的原因是函数有声明但没有定义。原创 2022-11-16 11:26:28 · 481 阅读 · 0 评论 -
【多线程】pthreads-win32静态库动态库编译方法以及demo示例
pthread-win32是POSIX多线程库的windows实现,同Linux下的多线程库具有同样的实现。pthread-win32下载地址:https://www.sourceware.org/pthreads-win32/原创 2017-11-08 21:57:18 · 2035 阅读 · 0 评论 -
【android】Android平台编译makefile编写规则
Date: 2018.10.9关于Application.mk,Android.mk和JNI的介绍更多可参考:https://developer.android.google.cn/ndk/guides/android_mkhttps://developer.android.google.cn/ndk/guides/application_mkhttps://developer.andr...原创 2018-10-09 19:21:31 · 1087 阅读 · 1 评论 -
【工程化系列】多平台编译脚本以及makefile自动化编译总结
Date: 2018.9.30 同一套库代码往往需要在不同体系架构或系统上的机器和设备上编译和运行,这就需要我们熟悉不同平台上的编译方法以及测试方法,本文旨在讲述多平台编译方法以及makefile自动化编译的总结。体系架构:Intel x86系统内核:Windows系统类型:win32,x64Windows平台编译方法:通过批处理脚本命令行编译VS工程体系架构:Intel x86系统内核:Linux系统类型:linux32,linux64Linux平台编译方法:makefile工程编译模板原创 2018-09-30 22:51:41 · 2149 阅读 · 0 评论 -
【多线程系列】Race Condition的产生和解决
DATE: 2022.6.22竞争(Race)计算机运行过程中,并发、无序、大量的进程在使用有限、独占、不可抢占的资源,由于进程无限,资源有限,产生矛盾,这种矛盾称为竞争(Race)。竞争条件(Race Condition)由于两个或者多个进程竞争使用不能被同时访问的资源,计算的正确性取决于多个线程的交替执行时序时,就会发生竞争条件(Race Condition)。竞争条件分为两类:Mutex(互斥):两个或多个进程彼此之间没有内在的制约关系,但是由于要抢占使用某个临界资源(不能被多个进程同时使用的资原创 2022-06-22 19:51:10 · 606 阅读 · 0 评论 -
【工程化系列】Meson编译系统使用方法
DATE: 2021.8.12文章目录1、参考2、Meson介绍3、Meson安装4、使用Meson编译的项目5、使用meson编译c代码5.1、新建一个简单的c代码:5.2、创建meson.build文件,内容如下:5.3、执行构建5.4、进入build目录,执行编译:5.5、编译完成,执行demo5.6、查看支持哪些编译选项:1、参考meson安装2、Meson介绍官方网址: https://mesonbuild.com/index.htmlMeson is an open source原创 2021-08-12 15:02:10 · 2060 阅读 · 0 评论 -
【工程化系列】支持Apple silicon的macOS平台工程编译环境搭建
DATE:2021.6.20ifeq ($(findstring Darwin, $(OS)), Darwin) ###MAC平台ifeq ($(target_plat), mac) CROSS ?= CC := $(CROSS)gcc -fPIC -DPIC CPP := $(CROSS)g++ -fPIC -DPIC AR := $(CROSS)ar ASM := yasm -DPIC## Apple Silicon arm64架构ifeq ($(原创 2021-06-21 22:22:03 · 316 阅读 · 0 评论 -
【硬件系列】SDRAM之乒乓操作总结
DATE: 2021.1.31文章目录1、参考2、何为乒乓操作?1、参考sdram之乒乓操作CMOS摄像头(4):SDRAM和乒乓操作2、何为乒乓操作?原创 2021-02-03 20:46:10 · 1580 阅读 · 0 评论 -
【开源项目/工程化系列】X86&ARM汇编优化模板: AssemblySample
DATE: 2020.9.14文章目录1、参考2、目的3、README4、开源地址1、参考【优化系列】X86架构汇编优化系列汇总【ARM系列】ARM NEON汇编优化系列汇总2、目的该模板主要用于快速入门X86 MMX/SSE/AVX/AVX2/AVX512汇编和ARM NEON汇编优化方法,主要包括了X86/ARM纯汇编优化方法、X86/ARM Intrinsic汇编优化方法和X86 Inline汇编优化方法。这个sample也是自己对X86和ARM汇编优化这方面知识的技术总结。3、RE原创 2020-09-16 15:28:17 · 505 阅读 · 0 评论 -
【工程化系列】C语言编程规范
DATE: 2020.8.16文章目录1、参考2、C语言编程规范2.1 代码总体原则2.2 (一)、头文件2.3 (二)、函数2.4 (三)、标识符 命名与定义2.5 (四)、变量2.6 (五)、宏、常量2.7 (六)、注释2.8 (七)、排版与格式2.9 (八)、安全性1、参考【编程系列】编程规范之文件头和函数头格式2、C语言编程规范2.1 代码总体原则1、清晰第一2、简洁为美3、选择合适的风格,与代码原有风格保持一致。(1)一般情况下,代码的可阅读性高于性能,只有确定性能原创 2020-08-16 18:30:58 · 370 阅读 · 0 评论 -
【Git系列】关于refs/for/ 和refs/heads/区别
DATE: 2020.8.14文章目录1、参考2、关于refs/for/ 和refs/heads/区别1、参考关于refs/for/ 和refs/heads/2、关于refs/for/ 和refs/heads/区别这个不是git的规则,而是gerrit的规则,Branches, remote-tracking branches, and tags等等都是对commit的引用(reference),引用都以 “refs/……”表示. 比如remote branch: origin/git_i原创 2020-08-14 16:53:01 · 6167 阅读 · 0 评论 -
【Git系列】Git message提交模板格式
DATE: 2020.8.13文章目录1、参考2、Gitmessage格式和模板2.1 Gitmessage格式2.2 Gitmessage模板3、模板设置相关命令4、git-commit编辑器nano改vim1、参考Git message提交模板Git 提交的正确姿势:Commit message 编写指南2、Gitmessage格式和模板2.1 Gitmessage格式每次提交,Commit message 都包括三个部分:Header,Body 和 Footer。<type&g原创 2020-08-12 18:02:44 · 785 阅读 · 0 评论 -
【工程化系列】CPU进程绑定技术(指定当前运行的CPU核)
Date: 2018.8.25 Tags: Linux技术将进程绑定到特定CPU核心上原创 2018-08-25 15:58:01 · 1627 阅读 · 0 评论 -
【工程化系列】linux下编译makefile将宏参数传递给C文件
DATE: 2020.8.2文章目录1、前言2、参考3、C文件4、makefile文件5、解析1、前言 在项目开发过程中,遇到需要将makefile中解析的参数(比如git log解析出的hash值)传入到C代码中。下面详细讲解如何实现将makefile中参数传递到C文件中。2、参考linux下编译 makefile 将参数传递给c文件3、C文件#include <stdio.h>int main(){ printf("Make Time: %s \n",M原创 2020-08-02 12:58:15 · 844 阅读 · 0 评论 -
【Git系列】git log --pretty=format:““的用法
DATE: 2020.8.2文章目录1、参考2、git log --pretty=format:" "3、使用举例1、参考git log --pretty=format:" "git log format2、git log --pretty=format:" "官方参考:https://git-scm.com/docs/pretty-formats控制显示的记录格式,常用的格式占位符写法及其代表的意义如下:'%H': commit hash'%h': abbreviated commi原创 2020-08-02 11:05:38 · 4472 阅读 · 0 评论 -
【工程化系列】软件版本号的命名规则
DATE: 2020.8.1文章目录1、参考2、软件版本号的命名规则1、参考版本号命名规则APP、软件版本号的命名规范与原则2、软件版本号的命名规则版本号的格式为 X.Y.Z(又称 Major.Minor.Patch),递增的规则为:X 表示主版本号,当 API 的兼容性变化时,X 需递增。Y 表示次版本号,当增加功能时(不影响 API 的兼容性),Y 需递增。Z 表示修订号,当做 Bug 修复时(不影响 API 的兼容性),Z 需递增。详细的规则如下:X, Y, Z 必须为非原创 2020-08-01 23:09:49 · 377 阅读 · 0 评论 -
【Git系列】Linux下获取git版本号
git log -1 | grep commitgit rev-list -n 1 HEAD | cut -c 1-7原创 2020-08-01 23:05:32 · 728 阅读 · 0 评论 -
【Github系列】GitHub提交时忽略不必要上传的文件
DATE: 2020.6.24本文目录1、忽略不必要文件的方法1、忽略不必要文件的方法新建.gitignore文件,写入要忽略的内容:idea/ //忽略idea目录下的所有文件/idea/do.txt //忽略某个具体文件!test.txt //不忽略 test.txt 文件/TODO //仅仅忽略项目根目录下的 TODO 文件,不包括 test/TODO*.zip //忽略所有.zip结尾的文件d原创 2020-06-24 18:27:09 · 1218 阅读 · 0 评论 -
【PE/Tools系列】不同系统文件共享(挂载)方法
Date: 2019.3.18前言 通常在嵌入式设备上运行程序,由于某些资源存储比较大,而嵌入式设备存储较小,因此需要将本地目录挂载到设备上,以实现文件共享。本文旨在分析常用的几种不同系统的文件共享方法。原创 2019-03-18 20:23:47 · 911 阅读 · 0 评论 -
【C/C++系列】跨平台统一时间函数SDK及用法
前面讲述过Linux平台下时间统计函数的用法,见linux下时间有关的函数和结构体和Linux下时间函数:struct timeval结构体。本文旨在梳理讲述Windows平台下时间统计函数的使用方法以及跨平台统一时间函数SDK。原创 2019-03-05 14:14:48 · 1067 阅读 · 1 评论 -
【PE系列】Windows平台为可执行文件exe添加图标的方法
DATE: 2018.12.27Windows平台为可执行文件exe添加图标的方法原创 2018-12-29 21:53:18 · 1591 阅读 · 0 评论 -
【工程化系列】逆向工程(反编译)
DATE: 2018.12.28文章目录1、参考2、反编译的概念3、常用的反编译软件1、参考https://blog.csdn.net/kakukemeit/article/details/12946079https://baike.baidu.com/item/%E5%8F%8D%E5%90%91%E7%BC%96%E8%AF%91/9932384?fr=aladdin2、反编译的概念计算机软件反向工程(Reverse engineering)也称为计算机软件还原工程,是指通过对他人软件的原创 2018-12-28 21:16:56 · 1726 阅读 · 0 评论 -
【工程化系列】VS中使用命令行单独编译的方法
DATE: 2018.12.10转载自:https://blog.csdn.net/delphiwcdj/article/details/6778084VS做的很智能,一个F7就完成了预处理、编译、链接的所有工作。但是当工程比较大,使用的文件模块比较多, 一旦出现编译错误定位问题时就比较困难。因此,有时候需要对每个模块单独编译,就像Linux下编写的 makefile文件一下,分别编译每一个...原创 2018-12-11 16:20:38 · 1462 阅读 · 0 评论 -
【PE/Bugs系列】error LNK2038:检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项
Date: 2019-4-4【Tag: 项目经验】1、error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项;2、C与C++混合调用(C文件中调用C++文件的函数,或者C++中调用C文件中的函数)原创 2019-04-04 19:12:15 · 512 阅读 · 0 评论 -
【PE/C系列】printf 连带错误机制和uint64打印输出方法
Date: 2019.4.2【Tag:工程项目经验】前言 C语言中的printf函数是经典的打印函数,使用频率很高。本文主要介绍printf的使用方法以及使用过程中遇到的相关问题,uint64的打印输出方法。printf使用方法:【C】printf()详解printf连带错误机制uint64打印输出方法原创 2019-04-05 15:36:33 · 745 阅读 · 0 评论 -
【C/C++系列】C工程中灵活的参数解析方式
Date: 2019-5-13前言 在工程实践中,通常我们在命令行传递参数时,会直接通过argv的方式将入参一一传递进去,这种方式简单且固定,不具扩展性,并且在大的工程中参数传递数目较多时,会出现漏传参数导致出现段错误等问题。本文主要提供了一种灵活的参数解析方式,推荐使用这种方式。1、 参考strcmp_referencestrncmp_reference2、 strcmp和s...原创 2019-05-13 20:37:26 · 277 阅读 · 0 评论 -
【DIY系列】笔记本光驱位更换为硬盘+主硬盘安装SSD过程记录
DATE: 2019-5-26如何查看光驱硬盘托架的尺寸Acer TM4750 系列光驱位换硬盘罗原创 2019-05-23 19:40:09 · 3954 阅读 · 0 评论 -
【PE系列】多线程程序时间统计
DATE: 2019.7.231、参考关于多线程对程序执行时间的影响linux下多线程C++运行时间统计多线程全面详解总结第1章 多线程2、多线程学习【Tools系列】多线程编程系列汇总3、多线程示例#include <iostream>#include <pthread.h>#include <unistd.h>#include &...原创 2019-07-24 10:13:20 · 286 阅读 · 0 评论 -
【工程化系列】命令行参数解析的两种方法
DATE: 2019.9.7前言 在实际工程使用中,命令行参数解析主要用于灵活的使用demo或库中不同功能特性,是一个非常重要的功能。本文主要讲述两种命令行参数解析的方法,重要讲述采用getopt函数的方法进行命令行参数解析。1、参考Parsing program options using getoptgetopt函数和getopt_long函数详解浅谈linux的命令行解...原创 2019-09-07 11:41:52 · 414 阅读 · 0 评论 -
【工程化系列】动态库、静态库、运行时库、引入库之间的区别
http://blog.csdn.net/finewind/article/details/44959039http://www.cnblogs.com/qinfengxiaoyue/archive/2012/05/27/2519703.htmlhttp://www.cnblogs.com/cmranger/p/4653396.html原创 2017-09-20 19:52:02 · 518 阅读 · 0 评论 -
【工程化系列】Visual Studio中版本号与名称对应关系
DATE: 2018.12.11转载自:https://blog.csdn.net/zgrjkflmkyc/article/details/79010301名字版本号简称全称msvc70VC7.0VS2002Microsoft Visual Studio 2002msvc71VC7.1VS2003Microsoft Visual Studio 200...转载 2018-12-11 15:58:36 · 4607 阅读 · 0 评论 -
【工程化系列】搭建支持C99源代码编译的vs2010工程的方法(附MinGW下Windows GNU makefile的编写)
DATE: 2018.12.8Tag来源:项目开发(1)搭建支持C99源代码编译的vs2010工程的方法;(2)MinGW下Windows GNU makefile的编写。原创 2018-12-10 20:19:37 · 2614 阅读 · 0 评论 -
【Python/PE】python中实现文件操作的几种功能(删除指定目录下的所有内容,文件复制等)
###Date: 2018/1/14###Author:SoaringLee=============================================================================1、文件操作功能1:清空指定目录(很有用哦)# -*- coding: cp936 -*-import osimport shut原创 2018-01-14 17:11:08 · 865 阅读 · 0 评论 -
【PE】链接选项-L,-l,-rpath,-rpath-link用法分析
http://blog.csdn.net/cjf_iceking/article/details/25219675http://blog.csdn.net/q1302182594/article/details/42102961原创 2017-12-10 21:37:40 · 2778 阅读 · 0 评论 -
【PE】判断一个线程是否执行结束的两种方法
http://blog.csdn.net/marcelxx/article/details/10449057原创 2017-11-03 15:29:53 · 4538 阅读 · 0 评论