
编译和调试
文章平均质量分 67
cmake、ros、vscode、visual studio
My.科研小菜鸡
这个作者很懒,什么都没留下…
展开
-
一、编译、构建、调试、运行
一般指的你写的代码,在Debug模式下编译以后,编译器在你的代码里插入了调试信息,你可以一步一步运行程序,查看中间结果,适用于你程序运行不对,需要检查中间过程确定问题源头的时候。真正程序发布时需要在Release模式下编译,去掉调试信息,否则Debug模式为了你调试方便,有很多辅助内容,也不会进行优化,程序效率比较低。不同的语言构建会有不通的处理步骤,最终产生可在具体特性环境运行的Artifact。是指将源代码变为目标代码的过程,从源代码的语言转变为另外一种计算机语言(一般为比源代码语言更为底层的语言)。.原创 2022-08-16 18:17:13 · 5479 阅读 · 0 评论 -
二、CMakeLists基本语法-内部构建
1、cmake使用实例1.1、构建目录t12.2、编写main.c,CmakeLists.txt文件//main.c#include <stdio.h> int main(){ printf(“Hello World from t1 Main!\n”); return 0;}#CMakeLists.txtPROJECT (HELLO)SET(SRC_LIST main.c)MESSAGE(STATUS "This is BINARY dir " ${HE转载 2022-03-25 16:00:03 · 1087 阅读 · 0 评论 -
三、CMakelist语法说明-外部构建-完整工程
1、内部构建缺点CMakeLists相关语法说明(一)给出了内部构建的简单实例。但内部编生成了一些无法自动删除的中间文件,所以, 引出了我们对外部编译的探讨,外部编译的过程如下:1,首先,请清除t1目录中除main.c CmakeLists.txt之外的所有中间文件,最关键 的是 CMakeCache.txt。2,在t1目录中建立build 目录,当然你也可以在任何地方建立build目录,不一定必 须在工程目录中。3,进入build目录,运行cmake …(注意,…代表父目录,因为父目录存在我们需要转载 2022-03-25 21:11:21 · 605 阅读 · 0 评论 -
四、CMakeLists——完成脚本、说明文档、版权文件doc文件夹的指定位置安装
1、安装命令详解1.1、CMAKE_INSTALL_PREFIX命令,设定使用install命令安装的目标路径CMAKE_INSTALL_PREFIX变量,类似于configure脚本的 –prefix,常见的使用方法:cmake -DCMAKE_INSTALL_PREFIX=/usr .1.2、INSTALL命令1.2.1、INSTALL命令基础INSTALL 指令用于定义安装规则,安装的内容可以包括目标二进制、动态库、静态库以及 文件、目录、脚本等。INSTALL 指令包含了各种安装类型转载 2022-03-25 22:01:22 · 422 阅读 · 0 评论 -
五、CMakeList创建静态库和动态库
参考视频:https://www.bilibili.com/video/BV1vR4y1u77h?p=5笔记链接: https://pan.baidu.com/s/1ue-p3Eum9pnPlJoPYhNLpg 提取码: nf2c任务:1,建立一个静态库和动态库,提供 HelloFunc 函数供其他程序编程使用,HelloFunc 向终端输出 Hello World 字符串。2:安装头文件与共享库。3.使用库静态库和动态库的区别:静态库的扩展名一般为“.a”或“.lib”;动态库的扩展名一般为原创 2022-03-27 21:41:56 · 7082 阅读 · 0 评论 -
六、使用静态库、动态库,常见问题解决
使用外部共享库和头文件准备工作,新建一个目录来使用外部共享库和头文件main.cpp./CMakelist.txt#CMakeLists.txtPROJECT (HELLO)ADD_SUBDIRECTORY(src bin)./src/CMakeList.txtADD_EXECUTABLE(hello main,cpp)hello.h路径:usr/local/hello/hello.h静态库动态库安装到usr/lib目录解决:make后头文件找不到的问题PS:include原创 2022-03-27 22:24:47 · 2725 阅读 · 0 评论 -
七、cmakelist使用库
原因比较简单,生成main需要依赖a.so和b.so中的符号定义,然而a.so和b.so库的生成是在main编译生产之后的,添加这条语句就是提醒编译器需要先生成main的依赖(a.so,b.so),然后再去生成main.根据平台的不同,编译后的可执行文件名可能为.exe或者。假设我们需要生成一个可执行文件,该文件生成需要链接a.so b.so c.so d.so四个动态库。将指定目录添加到编译器的头文件搜索路径之下,指定的目录被解释成当前源码路径的相对路径。原创 2022-11-01 18:29:15 · 182 阅读 · 0 评论 -
八、CMake 编译选项设置
在CMakeLists.txt中可以通过修改CMake内置的环境变量来改变C或C++的编译选项.编译选项相关的CMake 变量如下:等号右边是通过在CMakeLists.txt中打印对应变量得到的默认值。对于C语言设置CMAKE_C_FLAGS相关参数,C++语言设置CMAKE_CXX_FLAGS相关参数。并且分为DEBUG,RELEASE,MINSIZEREL和RELWITHDEBINFO四种类型。以C++语言编译选项为例:CMAKE_CXX_FLAGS_DEBUG:编译Debug版本的时候会采用的编译转载 2022-06-01 03:26:15 · 6012 阅读 · 0 评论 -
九、cmake 编译选项 add_compile_options CMAKE_CXX_FLAGS 区别
在cmake脚本中,设置编译选项可以通过add_compile_options命令,也可以通过set命令修改CMAKE_CXX_FLAGS或CMAKE_C_FLAGS。使用这两种方式在有的情况下效果是一样的,但请注意它们还是有区别的:使用add_compile_options添加-std=c++11选项,是想在编译c++代码时加上c++11支持选项。但是因为add_compile_options是针对所有类型编译器的,所以在编译c代码时,就会产生如下warning虽然并不影响编译,但看着的确是不爽啊,要转载 2022-06-01 02:44:05 · 1520 阅读 · 0 评论 -
visual studio IDE 调试(c#)
代码】visualstudio调试快捷键。原创 2022-07-21 22:25:11 · 523 阅读 · 0 评论 -
Vscode
一.下载vscode进入ubantu软件下载vscode,出现问题无法从这下载解决:sudo add-apt-repository ppa:gnome-shell-extensions/ppasudo apt-get updatesudo apt-get install gnome-shell-extensionssudo apt-get updatesudo apt-get update --fix-missingsudo apt-get upgrade重启即可。下载。二.中文注释失原创 2022-01-01 18:36:01 · 1020 阅读 · 0 评论 -
使用vscode在linux平台开发C++程序(1)(包括cmake,gdb)
1. 主要内容认识并使用vscode使用g++编译运行一个多文件C++工程使用cmake编译一个多文件C++工程在cscode上面编译运行/调试一个多文件C++工程不用vscode直接使用gdb调试一个多文件C++工程在vscode上直接调试一个C++工程与在vscode上使用gdb调试一个C++工程相结合2.认识并使用vscodevscod下载,安装和基本配置。将vscode远程连接阿里云linux服务器,或者个人的linux虚拟机,远程连接方法与连接过程中遇到的错误在都记录在我的转载 2022-05-31 15:49:54 · 2486 阅读 · 2 评论 -
使用vscode在linux平台开发C++程序(2)(包括cmake,gdb)
上一篇博客已经介绍了1,认识并使用vscode2,使用g++编译运行一个多文件C++工程3,使用cmake编译一个多文件C++工程4,在vscode上面编译运行/调试一个多文件C++工程使用vscode在linux平台开发C++程序(1)(包括cmake,gdb)接下来介绍:db是GNU开源组织发布的一个强大的Linux下的程序调试工具。一般来说,GDB主要帮助你完成下面四个方面的功能:启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。可让被调试的程序在你所指定的调置的断点处停住。(断点可转载 2022-06-01 00:11:46 · 698 阅读 · 0 评论 -
clion调试命令
强制单步执行:当调用了一个类库方法时候,强制进入会进入到该类库的方法里面,哪怕是class代码,这一般没必要,所以必须强制才能进去。原文链接:https://blog.youkuaiyun.com/prague6695/article/details/120088842。单步执行我的代码:就是和步过差不多,但区别在于进入的函数都是你自己定义的函数,若是各种库里的函数就不进入。若有函数,则进入该函数的第一行代码。步出:若执行的代码是所定义的函数,则直接将函数执行完并且跳出该函数。运行到光标处:故名思义。...转载 2022-08-30 02:13:14 · 546 阅读 · 1 评论 -
clion调试技巧
使用 IDE 而不是纯文本编辑器的关键优势之一在于调试体验。 调试涉及能够在任意点暂停程序执行并且能够检查变量的内容。CLion 支持使用 GDB 调试器(从 1.1 版起在 OS X 上,从 2016.2 版起在 Linux 上使用 LLDB)的调试体验。 这里是一些支持的核心调试功能。为了检查程序在特定点的状态,您需要暂停程序。 断点正是用于此目的。简单的断点会在特定行停止执行程序。 只需按下 Ctrl+F8 (Windows/Linux),或者也可以在代码左侧的灰色沟槽区域点击鼠标,这样即可设置断点。原创 2022-08-17 01:24:00 · 7570 阅读 · 2 评论 -
段错误调试
在程序运行过程中,操作系统内核认为你的操作是危险的,因此发送信号终止程序。一般与内存使用相关,比如最常见的内存泄露问题。core文件,中存储了核心已转储相关信息。找到内存泄露地点,改成智能指针。原创 2022-11-16 00:45:01 · 279 阅读 · 0 评论 -
c++调试技巧
F10:逐句F11:逐过程1.打开主函数rnx2rtkp.c,配置参数文件设置断点,开始调试。2进入rtkpos查看差分定位流程如果需要查看中间变量则在监视中添加关注的变量data,100//前一百data[100]//第一百个3.解码观测值文件:rinex.c中的decode函数rtkcmn,cn:rtk公共函数文件......原创 2022-01-23 17:18:10 · 1179 阅读 · 0 评论