项目构建与调试技术
文章平均质量分 90
项目构建与调试技术
hello world 999
日拱一卒无有尽,功不唐捐终到海,十年磨一剑,再见顶峰相见。
展开
-
【项目构建】01:代码编译链接与执行的过程
预处理Preprocessing:将.cpp文件转化为.i文件,预处理器把所有include的文件包括递归包含的文件内容,都展开到输出文件,并展开了所有的宏定义。编译Compilation:将.cpp/.h文件转换成.s文件,编译的过程将预处理的文件进行一系列的词法分析、语法分析、语义分析及优化成相应的汇编代码。这一步中一般会进行优化,比如去除没有用到的类的声明、循环语句的优化等。汇编Assemble:将.s文件转化为.o文件,原创 2023-08-01 11:33:15 · 340 阅读 · 0 评论 -
【项目构建】02:makefile项目构建
make是一个命令工具,makefile是一个文件,make执行的时候需要读取makefile文件中的规则(makefile规则需要自己写),makefile定义一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于更复杂的功能操作,由于静态库的特点,在编译时已经将库中的代码编译到二进制文件中,当编译完成后,该库文件可以删除,并且程序可以直接运行,由于动态库的特点,若只在编译时使用的动态库,而运行时没有指定动态库位置,则程序将无法正常运行,原创 2023-11-26 09:47:44 · 949 阅读 · 0 评论 -
【项目构建】03:CMakeList项目构建
cmake可以使用set命令为自定义的变量进行赋值操作,默认为字符串类型,源文件指定编译C++版本标准指定输出路径指定# 指定C++编译版本# 指定HOME路径# 指定源文件路径# 指定可执行文件输出路径宏功能执行cmake命令后的参数目录执行cmake命令的目录当前处理的CMakeLists.txt所在的路径target 编译目录定义目标二进制可执行文件的存放位置定义目标链接库文件的存放位置PROJECT指令定义的项目名称。原创 2023-11-27 11:37:56 · 1287 阅读 · 0 评论 -
【项目构建】04:动态库与静态库制作
与静态库不同的是,动态链接库必须与程序同时部署,还要保证程序能正常加载得到的库文件。由于静态库的特点,在编译时已经将库中的代码编译到二进制文件中,当编译完成后,该库文件可以删除,并且程序可以直接运行,由于动态库的特点,若只在编译时使用的动态库,而运行时没有指定动态库位置,则程序将无法正常运行,静态链接库:会将库中的代码编译到二进制文件中,当程序编译完成后,该库文件可以删除,文件目录结构如下,将第三方动态库动态载入,编译自己的项目,文件目录结构如下,将第三方静态库动态载入,编译自己的项目,原创 2024-04-29 07:06:12 · 1152 阅读 · 0 评论 -
【项目构建】05:makefile编写练习
编写makefile文件来编译带头文件的程序,原创 2023-11-26 09:50:05 · 450 阅读 · 0 评论 -
【持续更新中】Q&AGroup1
函数指针就是指向函数的指针变量。每个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。f = &func;函数指针的应用场景:回调callback,我们调用别人提供的 API函数应用程序编程接口称为Call;如果别人的库里面调用我们的函数,就叫Callback野指针:就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)产生原因:释放内存后指针不及时置空,依然指向原来的内存,那么可能出现非法访问的错误。初始化置NULL申请内存后判空指针释放后置NULL。原创 2023-08-27 11:26:13 · 961 阅读 · 0 评论 -
VMVareC++开发环境快速配置
做Linux下的C/C++开发,gcc和g++肯定是必备的,这个命令将会安装一系列软件包,包括gcc,g++,和make。为了长期方便并且舒适使用该虚拟机,首先需要对虚拟机的ip进行配置,否则一段时间后再登录虚拟机ip地址可能会发生变化,其实gdb自从8.3版本之后就已经默认支持了彩色显示,并且默认已经启用了,所以查看地址、文件名等符号时都是彩色的。为了方便使用xshell或者vscode连接虚拟机,进行远程开发需要安装ssh服务,并开放相应的端口号,等可执行文件,运行这里的gdb,代码高亮便默认启用了。原创 2023-08-26 09:39:00 · 3911 阅读 · 0 评论