1、系统镜像烧录

        详细过程参考下面笔记链接:

     RaspberryPi安装ubuntu 22及windows远程连接_树莓派 ubuntu-CSDN博客https://blog.csdn.net/weixin_48662810/article/details/134621511?spm=1001.2014.3001.5502

      硬件:raspberry Pi4B 8GB + 32G SD卡 + 读卡器

      软件:

2、烧录完成后对系统设置中文显示和中文输入法

       参考这位老师的教程:

     为 Ubuntu22.04 系统添加中文输入法_ubuntu22.04中文输入法-CSDN博客https://blog.csdn.net/weixin_44916154/article/details/124582379#:~:text=%E4%B8%BA%20Ubuntu22.04%20%E7%B3%BB%E7%BB%9F%E6%B7%BB%E5%8A%A0%E4%B8%AD%E6%96%87%E8%BE%93%E5%85%A5%E6%B3%95%201%201%E3%80%81%E9%A6%96%E5%85%88%EF%BC%8C%E5%AE%89%E8%A3%85%20Chinese%20%E8%AF%AD%E8%A8%80%E5%8C%85%202,%EF%BC%8C%E5%9C%A8%E5%BC%B9%E5%87%BA%E7%9A%84%E7%AA%97%E5%8F%A3%E4%B8%AD%EF%BC%8C%E7%82%B9%E5%87%BB%20Region%20%26%20Language%20%EF%BC%8C%E7%84%B6%E5%90%8E%E7%82%B9%E5%87%BB%20Manage%20Installed%20Languages

3、注意:完成步骤2后重启才生效

        可通过 shift 键或者 Windows + space 组合键切换输入法

4、下载VS code安装包

         浏览器输入code.visualstudio.com,enter进入官网下载.deb安装包

     注意:如果直接点击图中黄框下载得到的文件,默认是支持amd64架构的安装包

                树莓派是arm架构的,这样的话安装报错(已踩坑)

     办法:点击下拉尽头进去,选择 Other downloads ,选择arm64位的.deb格式的安装包

5、安装VS code

      网上办法很多,包括命令行下载安装、命令行结合可视化界面下载安装、官网下载好用可视化界面安装3种。

      我用的第三种,首先按照第4步下载符合硬件架构的deb格式安装包(虚拟机应该无所谓,树莓派是arm架构),然后安装包右键“使用其他程序打开”,选择“软件安装”,在出来的界面点击右边的安装,我因为已经装好了,右边就是“删除”。如下图。

6、Ubuntu22.04下vscode中配置g++/gcc编译、运行环境

      参考了这位老师的教程:

【ubuntu(Linux)安装Vs code并配置c++编译及cmake多文件编译】_ubuntu vs code-CSDN博客https://blog.csdn.net/Tengfei_Y/article/details/126893402      (1)学习Tips:vscode只是一个文本编辑器 ,想要编译c++文件需要安装g++编译器,gcc代表GUN编译器集合,GDB是GUN调试器     

      (2)在Ubuntu下vscode中配置g++/gcc编译、运行环境:

       i) 打开终端并输入“gcc -v”查看gcc版本,由于没有安装会提示找不到,并建议你用命令“sudo apt install  gcc” 安装,我就按照提示在终端输入“sudo apt install gcc”并输入密码,选择Y安装成功

       ii)再次用“gcc -v”命令查看gcc版本,显示如下图,同理可以使用图中的命令查看系统的g++、gdb的位置与版本等信息,如果没有,可以参考上面链接教程中的3.2节,使用“sudo apt-get install build-essential gdb”命令安装,最终确保安装好gcc、g++、gdb

        iii)至此完成最基本的c++编译环境配置,可编译、运行和调试单个cpp/c文件。

7、Ubuntu22.04下vscode中实现c单/多文件编译、调试

     (1)实现hello world单文件编译运行及调试

        i)首先,利用图像化界面在根目录下建立名称为“C”的文件夹如下(注:我给树莓派接了显示器)用于存放编写的c语言测试项目文件

      ii)打开vscode,依次选择“文件”,“打开文件夹”,打开刚刚创建的C文件夹,在该目录下新建文件夹“test_0328”,继续在该目录下创建“test.c”文件,并编写hello world 程序

         iii)选择右上角的运行,成功实现hello world 单个c文件的编译运行如下图    

   

     iv)可以打断点,再选择“调试C/C++文件”,进入调试模式,成功调试,可以参考视频

Ubuntu22.04下vscode单个c文件调试

     (2)实现比较大小多文件编译运行及调试

        以上我们已经实现单个c文件的运行和调试,多个c文件的运行和调试需要修改相关的编译配置文件(tasks.json)和调试配置文件(launch.json)。

        Tips:

launch.json负责执行生成的二进制可执行文件,修改launch.json配置文件,即修改跟调试相关的配置

 tasks.json负责编译所写代码生成可执行文件,修改tasks.json配置文件,即修改跟编译相关的配置

       i)点击打开.vscode下拉列表,发现自动生成了tasks.json文件,没有launch.json文件,需要自己创建,点击vscode界面左侧“运行和调试”,选择“创建launch.json文件”,选择“添加配置”,再选择第一个,可以参考下面两张图。

       那么这两个配置文件怎么改?我是先在windows下学习了vscode中多个c文件编译应该改上述两个配置文件的什么地方(我学习参考的视频链接放在后面8了),但是windows和linux系统必然不一样,我就把windows和linux(Ubuntu22.04)的vscode都打开对比两个配置文件有什么不同和相同,再加上前面提到的csdn博主老师的内容linux下两个配置文件每行大概是什么意思(在博文“4. VSCode调试C++时三个常用的json”处),按照自己的理解修改了launch和tasks这两个配置文件,具体内容放下面供参考,最终成功实现多文件运行及调试。参考视频

Ubuntu22.04下vscode多个c文件调试

        多个c文件的编写可以参考上面视频,很简单的比较大小,至此成功实现了linux(ubuntu22.04)下vscode多个c文件的编译运行和调试,完结撒花。

        下面开始Ubuntu22.04下vscode单/多个c++文件的运行调试(转9)

8、Windows下vscode中实现单文件及多文件编译运行

      在windows下快速入门vscode,我推荐这位up老师的视频

Visual Studio Code安装配置C/C++教程,VSCode调试教程,VSCode安装使用教程,VSCode配置c/c++_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV19c411G7ey/?spm_id_from=333.999.0.0&vd_source=e1951a3ef2e88be9541ce5058ce0f981        学习Tips:1.windows下需要下载windows版本的GCC编译器——MinGW编译器

                           2. vscode是一种基于文件夹的编辑器,需要提前规划好文件及文件存放位置

                          3. vscode的文件目录不要有中文

                          4. 先自行建立项目文件夹,再用VScode进入所建立的文件夹,并选择信任,在vscode中建立include和source文件夹和文件等

                           5. 也可以在vscode中直接选择“文件”,“将文件夹添加到工作区”,再继续创建文件夹和文件运行调试即可

9、Ubuntu22.04下vscode中修改编译和调试配置文件实现c++单/多文件运行及调试

        步骤7已经通过修改launch和tasks两个配置文件成功实现了c语言的多文件编译,c++的单个cpp编译和多个cpp编译方法一样,只需要修改launch和tasks中的配置,这里不赘述了,放视频备份一下

Ubuntu22.04下vscode多个c++文件运行调试

10、Ubuntu22.04下vscode中配置cmake实现多c++文件编译运行

学习Tips:

        既然我们可以通过修改launch.json和tasks.json这两个配置文件实现多个cpp文件的运行和调试,为什么还要配置cmake,编写CMakeLists.txt进行多文件调试?

        事实上,任何一个c++程序按理都可以用g++来编译,但对于规模较大的程序,文件夹、源文件、头文件、链接库、类、对象都很多,还存在复杂的嵌套关系,其中一部分需要编译成可执行文件、另一部分可能要编译成库文件,如果还是用g++命令来编译,需要大量的编译指令,i.e.配置文件将会很长、编译过程会很繁琐。

        于是,对于大型c++项目,使用工程管理工具可以提高效率。曾经工程师们使用makefile进行自动编译,但cmake比它更方便。

        在一个cmake工程中,使用cmake命令生成一个makefile文件,然后用make命令根据makefile文件内容编译整个工程。

(1)准备工作

        i)先决条件:确保已安装了gcc/g++/gdb(必须的!)

        ii)在vscode的扩展中搜索安装CMake Tools插件(这个不是必须的,因为第10步未借助vscode的cmake tools这个插件,而是自己去建立build文件夹,用cmake命令生成makefile文件,再用make命令根据makefile文件编译工程)

        iii)安装CMake(必须的!这个安装我按照步骤6提到的博主老师的4.1内容成功安装)

(2)配置CMake编译项目

        i)使用CMake编译项目需要有CMakeLists.txt文件,创建方法有两种:

                a. 在vscode中手动创建CMakeLists.txt文件

                b. 在vscode中通过快捷键生成CMakeLists.txt文件,再去修改

        ii)一般使用CMake项目的文件结构如下:

                1 项目文件夹(test_03_30)

                        1.1 build文件夹                  作用:放编译文件及中间文件

                        1.2 include文件夹              作用:管理.h头文件

                        1.3 src文件夹                     作用:管理.cpp源文件

                        1.4 CMakeLists.txt文件      作用:写编译配置命令

                注:include文件夹管理.h头文件;src文件夹管理.cpp源文件,build文件夹用来存放编译文件及中间文件(用git管理项目的可将build目录加入.gitignore,在push时忽略编译文件及中间文件),编译出问题时可以直接删除build文件夹重新编译。

       iii)用cmake配置编译比较大小的c++程序

             将比较大小的c++代码按 ii)所述文件结构编排,写好CMakeLists.txt文件(写好以后不要ctrl+s保存!!)、头文件(可以保存)、源文件(可以保存)如下图,这时还没编译,所以我们准备的build文件夹还是空的,图里可以看到,下面准备编译。

                  进入build文件夹进行编译,命令如下:

cd build

cmake .. #要想该命令有效,在创建好cmakelists.txt后,不要ctrl+s保存,否则cmake..不能生成对应的makefile,ctrl+s后会自动对应cmake tools工具中的编译和运行,cmake tools与命令有一定的区分性,因此通过json执行命令进行编译运行调试,与cmake tools还不太一样,如果json想通过cmaketools来编译运行调试cpp源文件则需要将cmaketools对应的环境和生成文件路径写到json中,但是这其实增加了执行过程,不建议这样,因为仅使用cmaketools就可以了,没必要增加复杂过程,仅使用cmaketools与通过json执行命令进行编译运行调试效果是一样的。

make

                这时在build文件夹已经生成了可执行文件main,运行main,成功。命令结果如下:

./main

注:以上过程10是没有用cmake tools插件而是手动输入命令用cmake编译运行的,也可以用vscode的cmake tools插件去配置cmake编译

                

          

                             

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: