Ubuntu20.04 VSCode 配置C++环境及GTK+配置【纯个人总结用】
目录
- 背景
- 一、Ubuntu20.04环境下安装VSCode以及配置C++环境
- 二、安装GTK+以及在vscode中的配置
- 三、最终解决方案直接看这里
背景
操作系统实验要求实现进程之间的通信,共享内存等要涉及到使用窗口程序的输入框的方法,可以使用Win32 API或者是POSIX API,由于Win32 API各种调用函数需要参入的参数特别多(查阅说是Win API很多参数是以前远古时代留下来的,有些可能没用了有些可能还有用,所以为了兼容,变的形式很丑),所以决定用POSIX标准来实现,这意味着需要在linux环境下进行开发,因此得在虚拟机里装的ubuntu配置c++的开发环境
至于开发环境本来想用devc++的但是好像ubuntu版本无法调试(该软件太老了),所以选择vscode
需要使用窗口程序,意味着要用c++实现GUI(图形界面),但属于新手一枚不知道哪个库好用,开始想用QT,查了之后大部分教程都是用的QT软件拖放控件来生成代码的,之后查看纯用代码使用QT,看起来非常的复杂,短期内没法快速上手,转战GTK+(Ubuntu的GUI好像也用的是GTK),目前看来实现相同功能使用GTK+的代码比QT少,可能容易上手一些。
另外,为了在虚拟机里打字方便,按照搜狗输入法官网linux版本的教程,配置花了1.5h,期间还改了更新源为alibaba提供的镜像,完成教程重启后结果无效。。。
废话不说,进入正文(对了写这篇的初心是防止虚拟机崩了时候能快速复现)
一、Ubuntu20.04环境下安装VSCode以及配置C++环境
对于配置环境,首先肯定先看看vscode官网的教程:
Using C++ on Linux in VS Code
看了一大堆教程,感觉最简洁明了的教程是该博主的(虽然和官网教程有重叠):https://blog.csdn.net/weixin_45608532/article/details/122175582?utm_source=app&app_version=5.3.1&code=app_1562916241&uLinkId=usr1mkqgl919blen
- 一行代码就能安装vscode
sudo snap install --classic code
安装后,根据个人习惯改了一下字体大小和风格。font-size改为16,风格为米色
- 安装gcc,g++,gdb全家桶
这也是官网里要求的前期准备
sudo apt-get update
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install gdb
gdb好像是用于debug的?我看在后面配置debug文件时候提到了gdb的名字
- 安装vscode与c++有关的插件
安装C/C++及C/C++ extension与Code Runner
之后在相应的cpp文件点击右上角的三角运行符号或者直接在终端命令行编译执行即可。
另外,vscode会在当前的文件夹(相当于workspace,会悄悄咪咪地创建.vscode文件夹,这个文件夹里专门放三个json配置文件
- c_cpp_properties.json
- launch.json
- tasks.json
这三个配置文件在下面会涉及到,这里先提一嘴(需要点一些按钮进行创建,具体点什么详情见上面提的官网文档,注意,点这些按钮的时候要先点击当前的cpp文件,把页面打开在这个cpp文件)
二、安装GTK+以及在vscode中的配置
主要参考:Ubuntu下GTK+的下载、安装
另外加个这个https://blog.csdn.net/qq_40904479/article/details/123707920
一行代码解决安装
sudo apt install libgtk-3-dev
1.下面就是跟着上面博客一步步进行了模仿,最后在vscode终端执行如下是可以编译运行文件的,这里从-phread开始的一长段是通过
pkg-config --cflags --libs gtk+-3.0
获得的
g++ gtk_test.c -o test5 -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
没学过cmake的用法所以没有跟着这个博主那样把这个长段指令放在一个专门编译用的文件里
2.于是想在vscode的配置文件里设置头文件的信息,头文件是来指出库文件所在的位置,编译的时候进行链接
vscode添加c++第三方库头文件的方法
把上面的长段指令放在properties文件里后,编译的时候报找不到<gtk/gtk+>头文件的错误,找了半天没有找到解决方法
3.找到了这个
VS Code 玩 C GTK 不报错能顺利编译运行的设置 tasks.json 等
这个倒是给了我一丝希望,配置三个文件后,操作后还是没啥用。
于是死心,虽然麻烦,就用终端加上编译指令的方法,后来看到编译指令可以不用加那么长段的指令,可以这样简单的写
g++ -o testGtk testGtk.c `pkg-config --cflags --libs gtk+-3.0`
但还是报错
4.似乎原因在于那个符号不是字符串符号,以及还有顺序问题?(没测试)
三、最终解决方案直接看这里
最后最后,还是觉得vscode的配置没配对
找到了一个看似可行的解决方法,似乎总结了前面绕的大圈(目前还没试)
https://www.it1352.com/2473193.html
附录:
"args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}","-pthread","-I/usr/include/gtk-3.0","-I/usr/include/at-spi2-atk/2.0","-I/usr/include/at-spi-2.0","-I/usr/include/dbus-1.0","-I/usr/lib/x86_64-linux-gnu/dbus-1.0/include","-I/usr/include/gtk-3.0","-I/usr/include/gio-unix-2.0","-I/usr/include/cairo","-I/usr/include/pango-1.0","-I/usr/include/fribidi","-I/usr/include/harfbuzz","-I/usr/include/atk-1.0","-I/usr/include/cairo","-I/usr/include/pixman-1","-I/usr/include/uuid","-I/usr/include/freetype2","-I/usr/include/libpng16","-I/usr/include/gdk-pixbuf-2.0","-I/usr/include/libmount","-I/usr/include/blkid","-I/usr/include/glib-2.0","-I/usr/lib/x86_64-linux-gnu/glib-2.0/include","-lgtk-3","-lgdk-3","-lpangocairo-1.0","-lpango-1.0","-lharfbuzz","-latk-1.0","-lcairo-gobject","-lcairo","-lgdk_pixbuf-2.0","-lgio-2.0","-lgobject-2.0","-lglib-2.0"],
"includePath": ["${workspaceFolder}/**","/usr/include/**","/usr/lib/x86_64-linux-gnu/**"]
2022/5/4 新增
今天尝试了一下命令
g++ gtk_test.cpp -o test2 `pkg-config --cflags --libs gtk+-3.0`
g++ -o test1 gtk_test.cpp `pkg-config --cflags --libs gtk+-3.0`
木有问题,都可以执行,说明上文提到没执行成功就是因为写成了字符串的标号问题
Ubuntu20.04 VSCode 配置C++环境及GTK+配置【纯个人总结用】相关推荐
- HC32L110(五) Ubuntu20.04 VSCode的Debug环境配置
目录 HC32L110(一) HC32L110芯片介绍和Win10下的烧录 HC32L110(二) HC32L110在Ubuntu下的烧录 HC32L110(三) HC32L110的GCC工具链和VS ...
- Ubuntu20.04中fastdfs,nginx的安装和配置(apt-get安装nginx添加fastdfs-nginx-module模块)
Ubuntu20.04中fastdfs,nginx的安装和配置 环境准备: 编译环境: Ubuntu20.04 使用的系统软件: fastdfs-6.07 fastdfs-nginx-module-1 ...
- ubuntu20.04 vscode使用ROS(C++)
ubuntu20.04 vscode使用ROS(C++) 1.在vscode安装扩展 ROS的安装较为麻烦,需要的@我,我单独出一份教程 在vscode的左边中的拓展(快捷键Ctrl+Shift+X) ...
- Ubuntu20.04安装STM32开发环境
Ubuntu20.04安装STM32开发环境 鉴于很多开发者需要用到Linux系统进行嵌入式系统开发,ST的编程软件很多已经支持Linux系统,这篇文章讲讲如何在Ubuntu20.04系统种安装ST的 ...
- 在Ubuntu20.04上安装MySQL8.0及正确配置[已验证]
在Ubuntu20.04上安装MySQL8.0及正确配置[已验证] 安装MySQL 验证 登陆MySQL 创建db 解决workbench连接的问题 小结 常用操作 如何新增用户 对新增的用户更改加密 ...
- linux离线配置qt环境,Linux下配置QT环境
一.下载Qt源码包到本机,然后解压缩 #tar zxvf qt-x11-opensource-src-4.3.2.tar.gz -C /usr/local //将qt-x11-opensource-s ...
- 从零开始安装搭建win10与ubuntu20.04双系统开发环境——集安装、配置、软件、美化、常见问题等于一体的——超详细教程
文章目录 **前言 ** 关于系统安装配置与软件安装 一.Win10安装ubuntu20.04双系统 1.按照自己的需求分区 2.配置软件镜像源 软件包管理工具介绍 更换APT源--使用国内镜像 3. ...
- Baxer双臂机器人Ubuntu20.04+ROS noetic开发环境配置
目录 前言 一.新建ROS工程及初始化编译 二.在Baxter的工作空间对setup.bash文件进行source 编辑 三.安装Baxter SDK 四.测试 编辑 总结 前言 Baxter s ...
- 在ubuntu20.04下搭建lamp环境并制作静态网页
1.准备工作 配置虚拟机安装ubuntu20.04 配置环境及相关设置(配置中文及防火墙等) 提示:详细安装方法参考B站up @Mrico_Frank 2.安装apache2 Apache HTTP服 ...
最新文章
- SVN客户端不显示绿色标识
- MapReduce的并行执行效率
- tensorflow 对csv数据进行批量获取
- 解决Myeclipse下Debug出现Source not found以及sql server中导入数据报错
- 全球及中国斜交胎市场品牌竞争形势与投资策略分析报告2022年
- 微软宣布.NET开发环境将开源 支持Mac OS X和Linux
- 中英数字混合的字符串截取
- 【数据结构与算法】之深入解析“排列硬币”的求解思路与算法示例
- 数据库 测试数据生成_我们的测试数据生成器如何使假数据看起来真实
- 华为正准备发布属于自己的手机操作系统;腾讯已经交出了首张产业互联网成绩单……...
- node.js第十课(HTTPserver)
- IDEA下Maven多模块项目介绍和搭建
- 从零开始学英语 (洪恩教学光盘 8CD)
- css数字怎么换行,css实现连续的英文或数字自动换行的方法
- 2022-2027年(新版)中国产权交易行业前景动态与未来发展形势报告
- XMind之快速上手
- 微信小程序之个人界面编写(2023.5.9版)
- cve-2008-4609一把梭
- ios 画线平滑_ios-iPhone平滑草图绘制算法
- KaTex 数学公式 基础
热门文章
- python3环境下使用cv_bridge
- android获取定位并标点,Android Studio 中实现高德定位并获取相应信息
- 重磅分享:微软面试100题2010年版全部答案完整亮相
- 按要求编写一个Java应用程序:(1)定义一个类,描述一个矩形,包含有长、宽两种属性,和计算面积方法。(2)编写一个类,继承自矩形类,同时该类描述长方体,具有长、宽、高属性
- 【资源分享】之stm8,开发软件安装,例程资源,以及清风电子教程。
- Bag of words and Bag of features
- vue项目集成腾讯滑块验证
- 但为君故——浅谈非科班大一在校大学生选择编程的心路历程。
- Failed to introspect annotated methods on class 异常
- Mac安装软件时提示“文件已损坏,您应该将它移到废纸篓”解决办法