debian 11 c/c++ 开发环境

8 篇文章 0 订阅

linux使用

在Ubuntu下搭建C/C++编程环境,综合起来说就是vim+gcc+gdb。其中vim用于文本编辑,gcc用于程序编译,gdb用于代码调试。

在Terminal中执行sudo apt-get install build-essential,即可安装必要的库函数。

 

文本编辑
Ubuntu自带的为vi编辑器,vim是vi的升级版,兼容vi。

1、安装
sudo apt-get install vim
2、常用指令
vim有三种模式
1.普通模式

当vim打开的时候就直接进入普通模式,在普通模式下可以执行删除、复制等指令

a , o ,i

 

2.插入模式 

插入模式可以编辑文本

Esc 键进入普通模式

3.命令模式

普通模式输入“:”(冒号)进入命令模式,此时在文本界面最下面一行可以输入相关命令,可以设置文本的保存退出方式等

普通模式常用下指令

i → Insert 模式,按 ESC 回到 Normal 模式.
x → 删当前光标所在的一个字符。
:wq → 存盘 + 退出 (:w 存盘, :q 退出)   (陈皓注::w 后可以跟文件名)
dd → 删除当前行,并把删除的行存到剪贴板里
p → 粘贴剪贴板
hjkl (强例推荐使用其移动光标,但不必需) →你也可以使用光标键 (←↓↑→). 注: j 就像下箭头。
:help <command> → 显示相关命令的帮助。你也可以就输入 :help 而不跟命令。(陈皓注:退出帮助需要输入:q)
 

有几张不同角度的cheat sheet,参考链接https://blog.csdn.net/weixin_35477207/article/details/78165411

 

 

 

vim学习连接:

https://vimjc.com/

https://coolshell.cn/articles/5426.html

https://vim-adventures.com/

https://blog.csdn.net/lsacaner/article/details/92800900

3.插件安装
对于Windows上做C++开发的用户来说,vs为他们做了大量的工作,语法高亮、自动缩进、智能提示等等,当你happy的使用vs时,请记住一点,这是一个收费软件,虽然在我大中华普遍都在使用微软的盗版软件,但作为程序员我们心里应该知道这是不对的行为,然后再去——等等,我们今天讨论的不是这个话题,我们要说的是Linux下的免费软件Vim!

我将本文需要安装的插件和配置文件都放在了github上,如果你不想大费周折的了解每个插件的安装方式,可以直接下载所有插件即可使用,项目地址https://github.com/handy1989/vim,可以按照如下命令备份并一次安装所有插件(注意,从git上下载的vim目录下都是隐藏文件,ls -a可以查看)

git clone https://github.com/handy1989/vim.git
mv vim/.vimrc ~/
mv vim/.vim ~/
sudo apt-get install ctags
原文链接:https://www.linuxidc.com/Linux/2016-06/132262.htm

代码编译
GCC(GNU Compiler Collection)是一组编译工具的总称,支持多平台、多语言源文件到可执行文件的编译与生成。其中也包括gcc(C编译器)和g++(C++编译器)。

编译单个文件为可执行文件:

g++ -Wall -W hello.cpp -o hello
编译多个文件为可执行文件:

g++ -Wall -W main.cpp hello_fun.cpp -o newhello
预处理
可以用gcc选项定义宏,-DNAME会定义一个名为NAME的宏。如g++ -Wall -DTEST dtest.cpp,定义了名为TEST的宏。定义的宏会对代码产生影响。
也可以为宏定义值,-DNAME=VALUE。如g++ -Wall -DNUM=100 dtestval.cpp,g++ -Wall -DNUM="2+2" dtestval.cpp,g++ -Wall -DMESSAGE="\"Hello,World!\"" dteststr.cpp。在代码中把宏用括号括起来是好习惯。

makefile文件
对于较大的工程,如果还像前文一样写命令行就太痛苦了。而使用makefile可以管理整个工程的编译规则,之后用一个make命令就可自动编译,相对方便很多。

makefile文件名应为Makefile或makefile

使用CMake自动生成makefile
当处理较大型的项目时,手动书写makefile就比较痛苦,这时用来用来自动化自动化工具makefile的自动化工具就是CMake。不过天下哪有那么便宜的事,它也是要写自己的CMakeLists.txt的。
推荐书籍《CMake实践》《Mastering CMake》和官网帮助。

简介

CMake是一个跨平台的自动化建构系统,它是用一个名为CMakeLists.txt的文件来描述构建过程,可以产生标准的构建文件,如Unix的makefile或Windows Visual Studio的projects/workspaces。
文件CMakeLists.txt需要手工编写,也可以通过编写脚本进行半自动的生成。

在Linux平台下使用CMake生成makefile并编译的流程如下:

安装CMake。在Ubuntu上安装cmake很简单$sudo apt-get install cmake。如果想要其Qt图形界面另需安装sudo apt-get install cmake-qt-gui。一般不需要,在Ubuntu系统上用ccmake就可以了。
编写CMakeLists.txt。
运行CMake。用cd将当前目录设为生成目标目录,执行命令ccmake srcdir(文字界面)或cmake -i(交互命令行),如果想使用Qt图形界面使用cmake-gui。
Makefile已经生成。使用make命令进行编译。
如果想清理工程。使用make clean。
cmke学习参考:https://www.cnblogs.com/wainiwann/p/6497791.html

代码调试
gdb
gdb是一个用来调试C和C++程序的功能强大的调试器,能在程序运行时观察程序的内部结构和内存使用情况。
gdb主要提供以下功能:

监视程序中变量的值的变化。
设置断点,使程序在指定的代码行上暂停执行,便于观察。
单步执行代码。
分析崩溃程序产生的core文件。
为使gdb能正常工作,必须在程序编译时包含调试信息。即-g选项。

简单的调试步骤示例
载入test可执行文件gdb test
运行run。
查看程序出错的地方where。
查看出错函数附近的代码list。
打开堆栈backtrace。
单步调节next或step。
查看可疑表达式值print var。
在可疑行打断点break 8。
重新运行会在断点处停止。用set variable修改变量值。
继续运行continue。看结果是否正确。
退出gdbquit。

 

CMakeList.txt 文件修改
修改CMakeList.txt 加入

SET(CMAKE_BUILD_TYPE "Debug") 
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
        原因是CMake 中有一个变量 CMAKE_BUILD_TYPE ,可以的取值是 Debug Release RelWithDebInfo >和 MinSizeRel。
当这个变量值为 Debug 的时候,CMake 会使用变量 CMAKE_CXX_FLAGS_DEBUG 和 CMAKE_C_FLAGS_DEBUG 中的字符串作为编译选项生成 Makefile;
重新编译

cmake -DCMAKE_BUILD_TYPE=Debug Path
参考链接:https://blog.csdn.net/gdp12315_gu/article/details/45063479

程序参数输入
gdb调试时,程序路径后跟的参数为gdb的参数,程序的参数需在运行时输入:

gdb test
run par1 par2
gdb学习链接:

https://www.cnblogs.com/life2refuel/p/5396538.html

http://blog.sina.com.cn/s/blog_a573f7990101k58w.html

参考文献:

https://www.cnblogs.com/BlueMountain-HaggenDazs/p/6426465.html

https://blog.csdn.net/weixin_35477207/article/details/78165411

链接:https://blog.csdn.net/lsacaner/article/details/92800216

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值