一、環境配置

一、下載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,項目結構如下

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712743.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712743.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712743.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

軟件測試——性能測試

目錄 一、性能測試簡介 二、性能測試指標 三、性能測試的流程 四、Jmeter簡介 五、Jmeter常見測試框架 六、Jmeter錄制腳本 七、腳本增強 八、Jmeter腳本參數化 九、斷言 十、關聯 十一、JDBC請求 十二、分布式測試 十三、性能測試報告 一、性能測試簡介…

API接口技術開發拼多多接口鏈接采集實時銷量、SKU信息、券后價格、優惠券信息API接入步驟及演示示例

要實現拼多多接口鏈接采集實時銷量、SKU信息、券后價格、優惠券信息API接入步驟及演示示例&#xff0c;首先需要了解拼多多開放平臺的相關API接口。以下是一個簡單的Java示例&#xff0c;使用requests庫調用拼多多開放平臺的API接口&#xff1a; 注冊并登錄開放平臺&#xff0c…

【LeetCode】一周中的第幾天+ 一年中的第幾天

2023-12-30 文章目錄 一周中的第幾天方法一&#xff1a;模擬思路步驟 方法二&#xff1a;調用庫函數方法三&#xff1a;調用庫函數 [1154. 一年中的第幾天](https://leetcode.cn/problems/day-of-the-year/)方法一&#xff1a;直接計算思路&#xff1a; 方法二&#xff1a;調用…

react Hook useEffect的基本使用及注解

一、概述 useEffect是React提供的一個Hook&#xff0c;用于在函數組件中執行副作用操作。副作用操作通常包括數據獲取、訂閱事件、手動操作DOM等。useEffect可以讓我們在函數組件中模擬類組件的生命周期方法&#xff08;如componentDidMount、componentDidUpdate、componentWi…

vue3+ts實現圖片預覽功能

首先&#xff0c;需要創建一個Vue組件&#xff0c;用于顯示圖片和預覽圖。 <template><div><img :src"imageSrc" mouseover"showPreview" mouseout"hidePreview" /><div v-if"previewVisible" class"previ…

【計算機考研】學碩還是專碩?

這里面沒有什么更好的選擇&#xff0c;大家都知道專碩錄取人數多&#xff0c;學碩錄取人數上&#xff0c;博弈一直存在 單就考研的難度上來說&#xff0c;專碩的難度確實要比學說低很多的&#xff0c;同樣的專業課的情況下&#xff0c;專碩的考研數學考的是數學二和英語二&…

rk3568 gamc0 控制器寄存器配置不了導致連接不上phy

系統啟動 GMAC 的驅動開機 log 上出現打印&#xff1a;No PHY found 或者 Cannot attach to PHY。查閱rk 官方gmac 配置指導手冊出現改問題的原因可能如下&#xff1a; 但反復檢查硬件和軟件發現都沒問題。看內核啟動日志發現gamc0 在啟動過程中讀取gmac0 的版本id是讀取不到&a…

P2440 木材加工

題目背景 要保護環境 題目描述 木材廠有 &#xfffd;n 根原木&#xff0c;現在想把這些木頭切割成 &#xfffd;k 段長度均為 &#xfffd;l 的小段木頭&#xff08;木頭有可能有剩余&#xff09;。 當然&#xff0c;我們希望得到的小段木頭越長越好&#xff0c;請求出 &a…

表格自定義音頻播放組件

1.在使用的地方調用 <Audiosvue ref"audio" class"audio-box" :audioFile"item.cont"></Audiosvue> 2.引入組件 import Audiosvue from "/components/audio"; 3.組件 <template><div><div style"d…

優化Vue項目中 WebStorm:2023.3 對 CSS 和 HTML 的默認注釋

前言 WebStorm是一種基于JetBrains IntelliJ平臺的集成開發環境&#xff08;IDE&#xff09;&#xff0c;專門用于Web開發。它支持JavaScript、HTML和CSS等語言&#xff0c;并提供了豐富的功能和工具&#xff0c;以提高開發人員的效率。但是&#xff0c;在開發Vue項目中發現&a…

(科目三)計算機操作系統

1、操作系統的基本概念及功能 1.1概念 一、操作系統的概念 操作系統是運行在裸機之上的&#xff0c;控制和管理計算機硬件和軟件資源、合理組織計算機工作流程一級方便用戶操作的程序集合。 操作系統由一套分層次的控制程序組成&#xff0c;是計算機硬件的一級擴充是軟件系…

【爬蟲逆向實戰 逆向滑塊 Python+Node】今天逆向的網站有點嘿嘿,還是僅供學習,別瞎搞

逆向日期&#xff1a;2024.03.01 使用工具&#xff1a;Node.js、Python 加密方法&#xff1a;AES標準算法 文章全程已做去敏處理&#xff01;&#xff01;&#xff01; 【需要做的可聯系我】 AES解密處理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 標準算…

Java底層自學大綱_互聯網安全設計篇

互聯網安全設計專題_自學大綱所屬類別學習主題建議課時&#xff08;h&#xff09; A 互聯網安全架構平臺設計001 如何防御XSS攻擊與防止抓包篡改數據2.5 A 互聯網安全架構平臺設計002 spring security實現動態權限控制2.5 A 互聯網安全架構平臺設計003 spring security整合j…

基于RISC-V架構的通信DSP的設計以及在5G RedCap基帶中的應用(六)-結論與展望

6 結論與展望 6.1 研究成果總結 基于RISC-V架構的向量指令集和通訊擴展指令集在5G Redcap基帶處理器中的應用&#xff0c;可以有效提升處理器在處理大量數據時的性能以及滿足特定應用需求的無線通訊能力。隨著5G技術的發展&#xff0c;對于滿足特定應用需求的行業&#xff0c;…

CentOS7 Mysql 忘記密碼或臨時密碼進不去時怎么跳過密碼進去然后再更改密碼

CentOS7 Mysql 忘記密碼或臨時密碼進不去時怎么跳過密碼進去然后再更改密碼 1、進文件 vi /etc/my.cnf2、加skip-grant-tables設置跳過密碼 在[mysqld]下面加 skip-grant-tables3、mysql -u root -p直接回車無密碼進去mysql mysql -u root -p3、先更新&#xff0c;不執行這…

實現unity場景切換

本文實現兩個按鍵實現場景1和場景2之間的切換 ①首先在unity 3D中創建兩個場景&#xff0c;分別為Scene1和Scene2 ②在Scene1中創建一個Button&#xff0c;修改txt內容為“To Scene2”&#xff0c;并在Buttons下創建一個空物體&#xff0c;用于掛載腳本。 腳本Trans Scene.…

操作系統x面試|進程與線程

1. 線程進程的區別 進程可以稱為是資源分配的最小單元&#xff0c;而線程可以稱為是處理器分配的最小單元。 資源包括內存空間。同時進程是一段代碼的執行過程&#xff0c;這段代碼需要多少的內存在代碼確定時已經確定下來了。 處理器就是執行單元&#xff0c;一個進程可以拆解…

程序員的金三銀四求職寶典

程序員的金三銀四求職寶典 金三銀四&#xff0c;即三月和四月&#xff0c;是程序員求職的黃金時期。在這個關鍵時期&#xff0c;求職者們需要做好充分的準備&#xff0c;以便在面試中脫穎而出。以下是一些建議&#xff0c;幫助程序員在金三銀四期間更好地準備求職&#xff1a;…

【DAY06 軟考中級備考筆記】數據結構:樹

數據結構&#xff1a;樹 3月1日 – 天氣&#xff1a;晴 之前在B站看的視頻講的是在太過簡單&#xff0c;棄了。現在換了新的視頻繼續&#xff0c;后續會重新看前面的視頻補過來。https://www.bilibili.com/video/BV1pT4m1S7uH/ 1. 樹的基本概念 需要注意的是&#xff1a; 并不是…

CentOS7使用yum安裝MySQL8.0教程

CentOS7使用yum安裝MySQL8.0 一、下載MySQL Yum下載倉庫二、安裝MySQL三、為MySQL運行提供相關的用戶以及環境四、啟動MySQL五、MySQL開機自啟六、修改MySQL中root賬戶的密碼 一、下載MySQL Yum下載倉庫 MySQL下載地址&#xff1a;https://dev.mysql.com/downloads/ 首先進入下…