一、环境配置

一、下载Ubuntu18.04版本镜像

我的电脑配置比较低(08年奥运限定版哦),使用的是虚拟机VMware进行安装Ubuntu18.04版,跟书上使用的一样
Ubuntu 18.04镜像
别下载错了哈
在这里插入图片描述

二、VMware下安装Ubuntu18.04操作系统

之前写过相关的博文,详细配置可参考博文:VMware创建Ubuntu操作系统到网络配置详细流程
需要注意的是第一步Ubuntu下载的时候用上Ubuntu18.04版本哈,其余操作不变

为了便于后续的操作,这里先列出几个常用的Linux命令和快捷键
终端快捷键:Ctrk+Alt+T
终端窗口放大:Ctrl+Shift+‘+’
把终端缩小:Ctrl+‘-’

功能命令举例解释
创建文件touch filenametorch beyond.cpp创建一个beyond.cpp文件
创建文件夹mkdir filenamemkdir yy创建一个yy文件夹
显示当前所在路径pwdpwd返回当前的路径
查看文件权限ls -i filenamels -i beyond.cpp查看beyond.cpp这个文件的权限
修改文件权限chmod 权限数字 filenamechmod 777 beyond.cpp把beyond.cpp文件的权限修改问可读可写可执行(777)
对文件进行编辑vim filenamevim beyond.cpp对beyond.cpp文件进行编辑

若上述命令提示权限不够,在最前面加入sudo即可,例如:sudo chmod 777 beyond.cpp

详细的Linux命令可参考博文:day1-Linux操作系统基础

本人在操作的过程中遇到问题及解决方案如下:

Ⅰ,屏幕不能适应全屏

可参考博文:VMware下Ubuntu无法全屏显示问题

Ⅱ,vim编译保存失败

①找到 软件和更新
在这里插入图片描述
②将下载自重新选择为阿里云,然后确定即可,一定要保证这个Ubuntu得联网哈
在这里插入图片描述
③选择软件更新器
在这里插入图片描述
确保软件都是最新的,不是最新的就升级
在这里插入图片描述

三、编辑第一个程序

home文件夹下创建slambook2文件夹,所有的代码都放在slambook2文件夹
slambook2文件夹下创建beyond.cpp文件,并赋予777权限
对于beyond.cpp文件进行编辑保存

主要命令如下:
sudo mkdir slambook2
sudo touch beyond.cpp
sudo chmod 777 beond.cpp
vim beyond.cpp

/home/slambook2/beyond.cpp内容如下:

#include<iostream>

using namespace std;

int main(int argc, char **argv){
    cout<<"Hello beyond!"<<endl;
    return 0;
}

在这里插入图片描述

Ⅰ,使用g++编译

安装g++:sudo apt-get install g++
编译:sudo g++ beyond.cpp,会在当前路径下生成a.out文件,存放编译的结果
运行:‘sudo ./a.out’
在这里插入图片描述

Ⅱ,使用cmake编译

重新打开个命令窗口,然后下载安装cmake:sudo apt-get -y install cmake
创建cmake文件夹,用于存放cmake编译内容
cmake文件夹下有三个文件:beyond.cpp、CMakeLists.txt、build文件夹

1,beyond.cpp:主函数文件

#include<iostream>

using namespace std;

int main(int argc, char **argv){
    cout<<"Hello beyond!"<<endl;
    return 0;
}

2,CMakeLists.txt

项目名称为:Beyond
生成的可执行文件为:beyond
编译的程序为:beyond.cppbeyond.cppCMakeLists.txt在同级目录下;若不在同一个目录下,需要指明路径

# 要求的cmake最低版本
cmake_minimum_required( VERSION 2.8 )

# 声明一个cmake过程
project( Beyond )

# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )
add_executable( beyond beyond.cpp )

3,build为一个空文件夹,因为cmake创建的过程中会产生一些中间文件内容,编译成功之后给文件夹就可以删除了

4,执行过程

①,首先进入到build文件夹下,运行sudo cmake ..,这里的俩点表示上级路径,因为CMakeLists.txtbuild文件夹同级,而我们现在进入到了build下,故需要通过俩点来进入上一级进行操作
之后会生成一些中间文件
在这里插入图片描述
②,然后接着在build文件夹下执行sudo make命令,得到beyond这个可执行文件
在这里插入图片描述
③,然后sudo ./beyond运行beyond这个可执行文件,即可运行beyond.cpp,输出相应的结果
在这里插入图片描述

项目的整个结构如下所示:
在这里插入图片描述

Ⅲ,使用库

在C++中,只有带有main函数的文件才可以生成可执行文件,其他的代码文件都可以称为,可供其他程序调用
通俗一点,没有main函数的文件都可称为

1,编写库文件libbeyond.cpp

#include<iostream>
using namespace std;

void printBeyond(){
     cout<<"Hello Beyond"<<endl;
}

2,编写CMakeLists.txt,对库编译成库

libbeyond.cpp文件编译成一个叫做的libbeyond
add_library(helloyy libbeyond.cpp):静态库,helloyy.a
add_library(helloyy_shared SHARED libbeyond.cpp):共享库,helloyy_shared.so

静态库每次被调用都会生成一个副本
共享库只有一个副本

3,编写头文件libbeyond.h

头文件用于说明库里面都有些啥

#ifndef LIBBEYOND_H_
#define LIBBEYOND_H_

void printBeyond();

#endif

这样就可以通过头文件和库函数进行调用printBeyond函数了

4,编写usemain.cpp主函数

库函数和头文件都有了,开始编写主函数进行调用

#include"libbeyond.h"

int main(int argc, char **argv){
    printBeyond();
    return 0;
}

5,再次编写CMakeLists.txt,对主函数编译可执行程序

add_executable(usemain usemain.cpp):生成可执行文件usemain
target_link_libraries(usemain helloyy_shared ):可执行文件与共享库helloyy_shared关联

6,最终CMakeLists.txt内容如下

# 要求的cmake最低版本
cmake_minimum_required( VERSION 2.8 )

# 声明一个cmake过程
project( Beyond )

# 添加一个可执行程序
# 语法:add_executable( 程序名 源代码文件 )

# 添加一个库
# 语法:add_library( 程序名 源代码文件 ) --->静态库 .a为后缀
# 语法:add_library( 程序名 SHARED 源代码文件 ) --->共享库  .so为后缀
# 静态库每次被调用都会生成一个副本
# 共享库只有一个副本

add_library(helloyy libbeyond.cpp)
add_library(helloyy_shared SHARED libbeyond.cpp)

add_executable(usemain usemain.cpp)
target_link_libraries(usemain helloyy_shared)

7,在build文件夹下执行下列命令

sudo cmake ..
sudo make
sudo ./usemain
即可出现最终的输出效果
在这里插入图片描述

8,项目结构如下

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/420484.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂ZKFair PFP-CyberArmy的参与价值与潜力

3月2日&#xff0c;ZKFair PFP-CyberArmy 将在 Element 上正式开始Public Sale。CyberArmy是遵循ERC-404协议所构建的战士形象NFT盲盒&#xff0c;总量9999个&#xff0c;每个盲盒对应一个战士形象&#xff0c;拥有独特的元素&#xff0c;象征公平、革命和永不放弃的精神。此次…

地图可视化绘制 | R-ggplot2 NC地图文件可视化

在推出两期数据分享之后&#xff0c;获取数据的小伙伴们也知道&#xff0c;数据格式都是NetCDF(nc) 格式网格数据&#xff0c;虽然我在推文分享中说明使用Python、R或者GIS类软件都是可以进行 处理和可视化绘制的&#xff0c;但是&#xff0c;还是有小伙伴咨询使用编程软件Pyth…

oracle11安装及使用

安装oracle11 官网下载地址 Oracle Database 11g Release 2 for Microsoft Windows (x64) 官网下载慢可访问我的资源 也可以网盘获取 链接&#xff1a;https://pan.baidu.com/s/1RDrGkqDA7tfKRnpJXUBMDw 提取码&#xff1a;z3na 上传安装包到服务器 在指定目录下创建文件…

JAVA SE 2.基本语法

1.Java的基本语法 1.基本格式 // 类的修饰包括&#xff1a;public&#xff0c;abstract&#xff0c;final 修饰符 class 类名{程序代码 } 例: public class Test{public static void main(String[] args){System.out.println("hello " "world");} }语法说明…

就业班 2401--3.1 Linux Day9--文件查找和压缩

一、文件查找与打包压缩 grep: 文件内容过滤 [rootqfedu.com ~]# grep root /etc/passwd #从/etc/passwd文件中过滤root字段 grep ^root root$ root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin 查找命令 [rootqfedu.com ~]# which ls ali…

特斯拉一面算法原题

来自太空的 X 帖子 埃隆马斯克&#xff08;Elon Musk&#xff09;旗下太空探索技术公司 SpaceX 于 2 月 26 号&#xff0c;从太空往社交平台 X&#xff08;前身为推特&#xff0c;已被马斯克全资收购并改名&#xff09;发布帖子。 这是 SpaceX 官号首次通过星链来发送 X 帖子&a…

即插即用篇 | YOLOv8 引入 MHSA 注意力机制 | 《Bottleneck Transformers for Visual Recognition》

论文名称:《Bottleneck Transformers for Visual Recognition》 论文地址:https://arxiv.org/pdf/2101.11605.pdf 文章目录 1 原理2 源代码3 添加方式4 模型 yaml 文件template-backbone.yamltemplate-small.yamltemplate-large.yamltemplate-neck.yaml

(介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)

前言 本文详细介绍了如何利用物联网技术,通过NodeMCU ESP8266(ESP-12F)模块连接到新版的OneNet平台,使用MQTT协议实现数据的上传与指令的下发。文中首先对NodeMCU ESP8266模块及其特性进行了简介,随后详细阐述了如何配置和使用MQTT协议连接到OneNet平台,实现温湿度数据的…

Linux 系统安装/卸载 Nginx教程

优质博文&#xff1a;IT-BLOG-CN 一、安装Nginx 【1】首先通过Nginx官网确定需要安装的版本&#xff0c;如果Linux联网则直接在Linux服务上使用wget命令将Nginx安装包下载到/usr/local/目录下&#xff1a; [rootxxx local]# wget -c http://nginx.org/download/nginx-1.22.1.…

XSS中级漏洞(靶场)

目录 一、环境 二、正式开始闯关 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x0B 0x0C 0x0D 0x0E ​ 0x0F 0x10 0x11 0x12 一、环境 在线环境&#xff08;gethub上面的&#xff09; alert(1) 二、正式开始闯关 0x01 源码&#xff1a; 思路&#xff1a;闭…

【Javascript编程实操02】1、判断一个年份是闰年还是平年 2、找到三个数中最小的数

目录 前言 1、判断一个年份是闰年还是平年 原理&#xff1a; 代码&#xff1a; 实现效果&#xff1a; 2、找到三个数中最小的数 流程图&#xff1a; 代码&#xff1a; 实现效果&#xff1a; 总结 前言 本次继续针对Javascript阶段的if...else...的实操练习&#xff0…

《读写算》杂志社读写算杂志社2024年第2期目录

教育资讯 教育部印发通知部署&#xff1a;做好2024年寒假期间校外培训治理工作 1《读写算》投稿&#xff1a;cn7kantougao163.com 北京提升学校心理健康工作水平——每校至少配备一名专职心理健康教育教师 1 湖北孝感&#xff1a;2026年达成小学毕业时人人会游泳 2…

【Qt】Sqlite数据库加密

1. 加密方式 对数据库文件加密。既不会暴露表结构&#xff0c;也不会暴露数据细节。 2. 加密工具&#xff08;QtCipherSqlitePlugin&#xff09; 用于密码 SQLite 的 Qt 插件&#xff0c;它基于 SQLite 源和 wxWidget 中的 wxSQLite3插件github地址&#xff1a;https://gith…

【力扣hot100】刷题笔记Day17

前言 今天竟然不用开组会&#xff01;天大的好消息&#xff0c;安心刷题了 46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 回溯&#xff08;排列&#xff09; class Solution:def permute(self, nums: List[int]) -> List[List[int]]:# 回溯def backtrack():if len(…

【InternLM 实战营笔记】浦语·灵笔的图文理解及创作部署、 Lagent 工具调用 Demo

浦语灵笔的图文理解及创作部署 浦语灵笔是基于书生浦语大语言模型研发的视觉-语言大模型&#xff0c;提供出色的图文理解和创作能力&#xff0c;结合了视觉和语言的先进技术&#xff0c;能够实现图像到文本、文本到图像的双向转换。使用浦语灵笔大模型可以轻松的创作一篇图文推…

【办公类-18-03】(Python)中班米罗可儿证书批量生成打印(班级、姓名)

作品展示——米罗可儿证书打印幼儿姓名 背景需求 2024年3月1日&#xff0c;中4班孩子一起整理美术操作材料《米罗可儿》的操作本——将每一页纸撕下来&#xff0c;分类摆放、确保纸张上下位置正确。每位孩子们都非常厉害&#xff0c;不仅完成了自己的一本&#xff0c;还将没有…

nginx如何配置命令启动

我安装好nginx后&#xff0c;发现不能使用systemctl start nginx或者systemctl stop nginx来控制启停 解决方法如下 首先要建一个nginx.pid的文件 一般是建在 /var/run/这个路径下面 sudo touch /var/run/nginx.pid 添加权限 sudo chmod 644 /var/run/nginx.pid可以进入到…

C#,双向链表(Doubly Linked List)归并排序(Merge Sort)算法与源代码

1 双向链表 双向链表也叫双链表&#xff0c;是链表的一种&#xff0c;它的每个数据结点中都有两个指针&#xff0c;分别指向直接后继和直接前驱。所以&#xff0c;从双向链表中的任意一个结点开始&#xff0c;都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循…

数学学习与研究杂志社《数学学习与研究》杂志社编辑部2023年第29期目录

考试研究 提高高三数学二轮复习质量的思考与实践 佘淮青; 2-4 提升高三数学复习质量的策略探究 王飞; 5-7 核心素养背景下的高中数学命题策略研究 陈明发; 8-10 提升中考数学复习课的有效性研讨 韩兴宏; 11-13 中学教学方法《数学学习与研究》投稿&#xff1a;…

【前端素材】推荐优质后台管理系统DAdmin平台模板(附源码)

一、需求分析 1、系统定义 后台管理系统是一种用于管理网站、应用程序或系统的管理界面&#xff0c;通常由管理员和工作人员使用。它提供了访问和控制网站或应用程序后台功能的工具和界面&#xff0c;使其能够管理用户、内容、数据和其他各种功能。 2、功能需求 后台管理系…