一、下載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 filename | torch beyond.cpp | 創建一個beyond.cpp文件 |
創建文件夾 | mkdir filename | mkdir yy | 創建一個yy文件夾 |
顯示當前所在路徑 | pwd | pwd | 返回當前的路徑 |
查看文件權限 | ls -i filename | ls -i beyond.cpp | 查看beyond.cpp這個文件的權限 |
修改文件權限 | chmod 權限數字 filename | chmod 777 beyond.cpp | 把beyond.cpp文件的權限修改問可讀可寫可執行(777) |
對文件進行編輯 | vim filename | vim 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.cpp
,beyond.cpp和CMakeLists.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.txt與build文件夾同級,而我們現在進入到了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
即可出現最終的輸出效果