VScode和Linux的连接(纯新手、初学者分享)

  • 虚拟机
  1. 环境的安装
  1. VM下载
  2. Ubuntu下载(官网下载就可以,本人使用的是22.04版本)
  3. 创建虚拟机。首先打开Vmware,点击创建,下一步,在光盘映像文件后面点击浏览,选择Ubuntu文件,文件格式为.iso。其次填写个人系统的别名,随便写,还有首次登陆用的用户名,用户名除了root以外都可以用,但必须是全英文。密码随便设置。最后是选择安装地址,不建议安装到C盘,因为需要给虚拟机分足够多的内存,所以安装在内存剩余较多的硬盘里会更好,我选择分了80G给虚拟机。等待安装完毕。
  4. 安装时会弹出缺少工具包的信息,这个并不影响总体操作,顺着系统给出的提示安装工具包就可以了,如果安装不上,那就等网路好的时候安装。
  5. 安装完虚拟机以后,单击屏幕进入虚拟机,选择语言,没有中文。接着一直点继续,然后会选择时区,我选择了中国时区,接着开始填写信息。两个名称,一个是用户名称,还有一个是系统名称,密码随便。最后点击名称,输入密码,然后会有弹窗,全部跳过就可以,然后就可以正常进入到虚拟机了。
  1. 虚拟机的设置
  1. 打开应用菜单,就是左下角那九个点。打开菜单以后,找到terminal的应用,双击打开,进入到一个窗口文字界面。
  2. 然后首先需要设置root用户的密码,因为最开始登录,Ubuntu不允许root超级用户直接登录。具体操作:在光标处输入sudo passwd,点击回车,会让你输入密码,特别注意密码不能太简单,密码不能小于8位数,而且在输入密码的时候系统不会显示输入字符,也不会显示*号提示输入位数,密码需要自己去控制所设字符和密码位数
  3. 当密码设置成功的以后,输入sudo su,点击回车就可以切换到root超级用户了。当切换到root超级用户以后,命令行前缀会变成root@。
  4. 接着输入cat /etc/apt/sources.list,点击回车以后,再输入echo "deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ jammy-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse

" > /etc/apt/sources.list

特别需要注意的是,输入时不能有错,哪怕错一个空格都会失败,其次,不能使用这样的整句命令,要一句一句的输入,每输入一句就要点击一次回车,每一句的前面都要写“echo”。

  1. 因为当时我是整句输入,所以导致一直不成功,然后索性使用了别的源,第一句“echo  "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse"   >  /etc/apt/sources.list”,第二句“echo  "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse"   >>  /etc/apt/sources.list”,第三句“echo  "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse"   >>  /etc/apt/sources.list”,第四句“echo  "deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse"   >>  /etc/apt/sources.list”,然后输入cat  /etc/apt/sources.list。
  2. 输入完上面的任意一个命令,再输入apt    update,只要能显示从网址里读取,就表示正常
  3. 接下来需要安装一个名为vim的编辑器,需要用vim修改ssh的配置。具体操作为输入apt   install   vim,然后回车进行对vim编辑器的安装。
  1. 设置ssh
  1. 为了能在虚拟机外面访问,所以需要配置ssh。首先需要先安装ssh,输入命令apt install openssh-server,点击回车对ssh进行安装。
  2. 安装完成以后,使用vim打开/etc/ssh/sshd_config文件,进入编辑模式,找到#PermitRootLogin prohibit-password这一句代码,将其改为PermitRootLogin yes,然后退出编辑模式,保存退出。
  3. 重启ssh,输入/etc/init.d/ssh restart,这段命令是安装openssh服务后,在系统配置区留下的一个控制ssh服务的脚本。
  4. 下载xshell,官网上有免费版。下载好以后,新建会话,会话名称随意,主机填写虚拟机的IP,点击确定,然后左边一栏会出现新建会话的名称,点击新建的会话,填写用户姓名,初学者建议用户名设为root,要不然很多权限都不够,以后对权限熟练了,再自己设置用户名,接着设置密码,不能太简单,不然密码会被拒绝使用,届时需要重设。
  5. 到这里,关于ssh的修改就完成了,我们可以在xshall的编辑框内使用vim创建文件,并进入编辑模式,可以在编辑模式中编写C++的代码,特别注意,新建的文件后缀只能是“.cpp”或“.cc”,这样系统才能正常识别C++代码。
  6. 然后使用G++编译运行新建的“.cpp”或“.cc”文件
  1. VScode的设置
  1. 首先打开VScode,选到插件,搜索下载remote development,然后下载Remote Development,Remote – SSH和Remote - SSH: Editing Configuration Files。
  2. 选择左边栏像电脑一样的图标,点击后会在中间栏上面显示“远程资源管理器”,旁边有个下拉菜单,点击选择“remote(tunnel……)”,然后点击SSH,有个齿轮会出现,点击齿轮后在中间搜索栏会出现多个选项,选择第一个config文件进行配置的修改。首先第一个host是对远程系统的昵称,随意写,hostname是对ubuntu的IP,然后user后面写root就可以,特别注意,追加内容要和刚才提到过的标签名之间加一个空格。
  3. 接着打开提前下载好的gitbash,运行ssh-keygen -t rsa,然后在Ubuntu中运行ssh-keygen,两次操作中最重要的,就是看两次结果中的加密算法是否相同。ssh-keygen这个命令是直接产生用于访问当前系统的ssh密钥公钥。加密算法有很多,如果两种默认算法不同,那就需要专门去指定成一样的,才能连通两个机器。因为需要用这个东西让VScode能一直免密登陆到Ubuntu,否则每隔一分钟半分钟就要在VScode上输入一次密码。
  4. 然后我们打开.ssh文件,用记事本打开.pub文件,将里面内容复制,然后在Ubuntu中用vim打开~/.ssh/authorized_keys,进入编辑模式,追加到最后。然后回到Vscode,在config文件中追加一行IdentityFile +文件路径+id_rsa文件。保存后点击“远程资源管理器”下面的“remote”键右边的刷新按钮。然后系统会先访问github,关掉网页,然后跳过访问github,就会更新ssh了。然后在Ubuntu中输入server sshd 。/etc/init.d/ssh restart
  5. 接着SSH的下拉菜单里会显示出自己的远程系统昵称,点击昵称,右边会出现箭头,点击箭头,会出现三个操作系统的名称,选择linux进行连接。这个时候,成功就成功了,连接失败,那就和我一样坐牢。
  6. 首先,连接失败的第一个猜想,没有写入端口号,所以打开cinfig文件,追加一句Port 22,再次进行连接,我这里又是连接失败。失败的第二个猜想,config文件中多了点东西,所以选择打开config文件删掉IdentityFile这一行配置,再次进行连接,我这里又失败了。然后选择在浏览器中输入地址https://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stahttps://update.code.visualstudio.com/commit:${commit_id}/server-linux-x64/stableble,将${commit_id}替换成VScode的版本提交编号,具体位置在上方工具栏中点击帮助,再点击关于,可以查找到这一串数字。在这个网页中会自动下载一个压缩包,然后在Ubuntu中上传这个压缩包。那么连接失败的第三次猜想就是,可能再连接linux的时候,Vscode没有办法顺利下载这个包。上传以后,解压这个包,然后再次点击连接,但是我这里总是解压失败。这时候指导我的大佬有事出门了,然后就剩我一个人坐牢。
  7. 我尝试换了一种上传方式,切换了上传时使用的协议,然后进行解压,解压成功了,然后再次尝试连接,连接失败,大脑宕机了。因为花费了太多时间,导致我当时又累又饿,把饭点也误了,所以我出去吃了个饭,散了散步,回来继续。
  8. 我在网上的社区找了很多种方法,进行了几个小时的尝试,但是结果并不好,本来都打算放弃了,直到我的好朋友在我的分享下连接成功,噢,我没成功,他看了我的经验他成功了,难受。然后就尝试了自己的方法,没有上网去找大佬的相关经验,也没有求助别人,用自己最初学习编程的方式,看报错,一行一行看。讲实话,英文水平低看这些东西确实困难,但好在本人悟性比较高,勉强看懂。看到最后的时候,我发现一个问题,那就是系统在连接Linux时发现我的config文件权限不良,我不懂权限不良是什么意思,但是我看到系统尝试帮我删除config的其中一个权限,结果失败了,我想这就是折磨我一个下午的原因,然后我将自己的config文件的权限进行了修改,删除了系统想要删除的那一个权限,最后,连接成功。
  9. 做了一下午牢,完成以后已经晚上十点钟了,我出去跑了一会儿,仔细回想这一天,貌似困扰我的并不是这些软件,困扰我的可能是自己。当遇到了一位真正的大佬时,作为初学者,总会下意识的去依赖这位大佬,从而忽略自身的能力;当独自接触新事物时,遇到问题会下意识的去搜寻其他大佬的经验,忘记了第一次接触这些时被教授的基本技能,其实有些问题,就算不靠别人也可以自己解决,对自身能力的肯定和时刻具有独立思考的能力,对于技术的研究和学习有着事半功倍的效果。
  10. 连接上Linux以后,我们需要下载两个插件,分别是C/C++和code runner,接着选择新建文件夹,这里选择新建文件夹完全是个人习惯,这个文件夹之后会存放我所有的编码文件和二进制文件。然后在这个文件夹里创建一个文本文件,后缀为.cpp。然后写入简单的C++代码,比如“Hello World”,接着点击F5,出现了三个选项,选择g++生成活动文件,然后系统会提示警告,这时要打开launch.json文件,替换成以下内容:{

    // Use IntelliSense to learn about possible attributes.

    // Hover to view descriptions of existing attributes.

    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387

    "version": "0.2.0",

    "configurations": [

        {

            "name": "g++ - 生成和调试活动文件",

            "type": "cppdbg",

            "request": "launch",

            "program": "${fileDirname}/${fileBasenameNoExtension}",

            "args": [],

            "stopAtEntry": false,

            "cwd": "${fileDirname}",

            "environment": [],

            "externalConsole": false,

            "MIMode": "gdb",

"setupCommands": [

                {

                    "description": "为 gdb 启用整齐打印",

                    "text": "-enable-pretty-printing",

                    "ignoreFailures": true

                }

            ],

          "preLaunchTask": "C/C++: g++ 生成活动文件",

           "miDebuggerPath": "/usr/bin/gdb"

        }

    ]

}

接着打开命令面板,找到任务:配置任务,打开tasks.json文件,输入以下内容:{

    "tasks": [

        {

            "type": "cppbuild",

            "label": "C/C++: g++ 生成活动文件",

            "command": "/usr/bin/g++",

            "args": [

                "-fdiagnostics-color=always",

                "-g",

                "${file}",

                "-o",

                "${fileDirname}/${fileBasenameNoExtension}"

            ],

            "options": {

                "cwd": "${fileDirname}"

            },

            "problemMatcher": [

                "$gcc"

            ],

            "group": "build",

            "detail": "调试器生成的任务。"

        }

    ],

    "version": "2.0.0"

}

然后打开命令面板,打开setting.json文件,输入以下内容:{

    "editor.fontSize": 22,

"workbench.colorTheme": "Kimbie Dark",

"version": "0.2.0",

 "configurations": [

 {

 "name": "C/C++",

 "type": "cppdbg",

 "request": "launch",

 "program": "${fileDirname}/${fileBasenameNoExtension}",

 "args": [],

"stopAtEntry": false,

 "cwd": "${fileDirname}",

"environment": [],

 "externalConsole": false,

 "MIMode": "gdb",

 "preLaunchTask": "compile",

 "setupCommands": [

 {

 "description": "Enable pretty-printing for gdb",

 "text": "-enable-pretty-printing",

"ignoreFailures": true

 }

 ]

 }

 ],

 "code-runner.runInTerminal": true,

 "debug.onTaskErrors": "showErrors",

 "C_Cpp.default.includePath": [

 ],

 "code-runner.executorMap": {

 "javascript": "node",

 "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",

 "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

 "cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt -std=c++11 && $dir$fileNameWithoutExt",

"objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

 "php": "php",

 "python": "python -u",

 "perl": "perl",

 "perl6": "perl6",

 "ruby": "ruby",

 "go": "go run",

 "lua": "lua",

 "groovy": "groovy",

 "powershell": "powershell -ExecutionPolicy ByPass -File",

 "bat": "cmd /c",

 "shellscript": "bash",

"fsharp": "fsi",

"csharp": "scriptcs",

 "vbscript": "cscript //Nologo",

 "typescript": "ts-node",

 "coffeescript": "coffee",

 "scala": "scala",

"swift": "swift",

 "julia": "julia",

 "crystal": "crystal",

"ocaml": "ocaml",

 "r": "Rscript",

"applescript": "osascript",

"clojure": "lein exec",

"haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",

"rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",

"racket": "racket",

"scheme": "csi -script",

 "ahk": "autohotkey",

"autoit": "autoit3",

"dart": "dart",

"pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",

"d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",

"haskell": "runhaskell",

 "nim": "nim compile --verbosity:0 --hints:off --run",

"lisp": "sbcl --script",

"kit": "kitc --run",

"v": "v run",

"sass": "sass --style expanded",

"scss": "scss --style expanded",

 "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",

"FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

 "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

 "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",

"fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"

 },

 "terminal.integrated.tabs.enabled": true,

 "C_Cpp.default.cppStandard": "c++20",

 "C_Cpp.default.cStandard": "c17",

 "workbench.editorAssociations": {

"*.ipynb": "jupyter-notebook"

 },

 "notebook.cellToolbarLocation": {

"default": "right",

"jupyter-notebook": "left"

 },

 "diffEditor.ignoreTrimWhitespace": false,

 "explorer.confirmDragAndDrop": false,

"explorer.confirmDelete": false,

}

打开命令面板,搜索C/C++,选择C/C++编辑配置(UI),然后打开c_cpp_properties.json文件,输入以下内容:{

    "configurations": [

        {

            "name": "Linux",

            "includePath": [

                 "${workspaceFolder}/**",  // 将本地工作目录添加到include路径中,

                 // 这样本地的所有头文件都可以被VSCode索引,这样编辑就不会触发红色的波浪线;

                 "/usr/include/**" // 将Linux下的引用路径添加到include路径中,

                 // 对于一些第三方依赖库,如Boost的头文件,就能被VSCode索引

            ],

            "defines": [],

            "compilerPath": "/usr/bin/gcc",

            "cStandard": "c17",

            "cppStandard": "gnu++17",

            "intelliSenseMode": "linux-gcc-x64"

        }

    ],

    "version": 4

}

然后回到自己的.cpp文件中点击F5,运行成功。

到这里,所有的环境配置就都完成了。

以上的配置代码,只支持单个文件的C++代码编写,不支持多文件的代码编写。

  • 22
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值