选择C++编译器和开发工具,根据操作系统选择。windows下可选Visual Studio,Visual Studio Code, vcpkg 和 MinGM。Visual Studio,Visual Studio Code既可以做开发IDE,也可做编译器,不过Visual Studio Code需要安装插件,跟eclipse类似,安装CDT插件后也可以。
windows下的编译器下载和安装
使用 Visual Studio 2019的不用安装
MinGW - Minimalist GNU for Windows download | SourceForge.net
完全安装。安装所有组件后设置环境变量,必要的,因为编译的时候需要从path路径中找编译器。
右键我的电脑->属性->高级系统设置->环境变量
在里面依次按照如下步骤添加修改:
1.新建MINGW_HOME变量,值为你的MinGW的安装目录,比如我的安装目录是在D:\software\MinGW
2.在PATH变量里加入%MINGW_HOME%\bin;
3.新建LIBRARY_PATH变量,如果有的话,在值中加入%MINGW_HOME%\lib,这是标准库的位置
4.新建C_INCLUDEDE_PATH变量,值设为%MINGW_HOME%\include
第五步根据自己的版本设置
5.新建CPLUS_INCLUDE_PATH变量,值设为%MINGW_HOME%\include\c++\3.4.5;%MINGW_HOME%\include\c++\3.4.5\mingw32;%MINGW_HOME%\include\c++\3
.4.5\backward;%MINGW_HOME%\include
验证是否安装成功?命令行输入:g++ -v
eclipse 安装完c++ 的插件后,就新建一个C/C++项目练练手吧。
新建项目后,项目属性配置如下,(新建项目总会吧?file–>new–>c/c++projects)
随便写个main函数,输出一个信息,然后构建编译项目,很简单,只要右键build project
然后就右键run project as C/C++ project
注意,这样的构建和编译,只能有一个main函数。作为程序入口。
h头文件一般是函数接口定义和结构体,这里的函数只是声明参数和返回类型,对应的.cpp才是具体实现。
.cpp 与 h头文件例子:
/*
* FileUtil.h
*/
#include <iostream>
#include <algorithm>
#include <sstream>
#include <fstream>
class FileUtil {
public:
FileUtil(const std::string& name);
std::fstream& getStream();
virtual ~FileUtil();
private:
std::fstream file;
};
// 注意第二个函数有返回值!!
/*
* FileUtil.cpp
*/
#include "FileUtil.h"
FileUtil::FileUtil(const std::string& name) : file(name) {
if (!file) {
throw std::runtime_error("Unable to open file.");
}
};
std::fstream& FileUtil::getStream(){return this->file; };
FileUtil::~FileUtil() {
file.close();
};
c++ 函数后面加一个冒号的含义
① 冒号后面跟的是赋值,这种写法是C++的特性
A( int aa, int bb ):a(aa),b(bb)
{}
相当于
A( int aa, int bb )
{a=aa; b=bb;}
② C++构造函数后面的冒号
构造函数后加冒号是初始化表达式,有四种情况下应该使用初始化表达式来初始化成员:
1:初始化const成员
2:初始化引用成员
3:当调用基类的构造函数,而它拥有一组参数时
4:当调用成员类的构造函数,而它拥有一组参数时。
".“与”->"的区别
".“和”->"的主要区别在于它们所操作的对象类型:
".“运算符用于直接操作对象,也就是说,在对象上使用”."运算符可以直接访问其成员。
"->“运算符则用于通过指针操作对象。当我们有一个指向对象的指针而不是对象本身时,就需要使用”->“运算符。
尽管”.“和”->"在功能上看起来非常相似,但由于C++语言的特性,它们在使用时有着明显的区别。在C++中,对象和指针是两种完全不同的数据类型,因此对于这两种类型的操作,我们需要使用不同的运算符。
如何在window下开发c++源码,然后模拟在linux下的编译?
开发工具不能用Visual Studio了,可以用eclipse 或者 Visual Studio code ,编译器选择cmake和 linux下的g++。
需要有一个linux 系统,方便一点的可以用wsl 安装linux。只有专业版才能启用Windows自带的Hyper-V虚拟机管理工具。
打开开始菜单的 Microsoft store
在上面搜索linux 系统安装。
前提需要安装wsl , 如何安装和配置 wsl 这里不详细描写了,找找资料,有几个关键步骤:
(期间可能还会涉及bios设置。需要设置cpu支持虚拟化。这过程根据错误信息,找出对应的解决办法)
直到菜单栏的linux能正常启动,就算成功了,当然,我们不能止步于此。
我们要把linux子系统配置成一个拥有独立ip的,能联网的服务器。
这时候需要把虚拟机的网络连接方式,设置成桥接方式。VMware Workstation Pro 17 可以很容易做到:
wsl也有相应的办法,不过需要把wsl 升级到最新版为好。
新版wsl ,在当前用户的根目录下,新建一个.wslconfig文件,内容
[experimental]
networkingMode=mirrored
dnsTunneling=true
firewall=true
autoProxy=true
旧版的详细配置可参考这: Win11 WSL2桥接网络实现
建议安装windows最新专业版 和wsl的最新版,因为windows 的虚拟化起步较慢,以前的版本有很多坑和限制。
然后配置ip和网关。
设置 IP 地址和子网掩码:
ip address add <ip_address>/<subnet_mask> dev <interface_name>
#命令可以简写,示例
ip a add 192.168.1.100/24 dev eth0
设置默认网关:
ip route add default via <gateway_ip_address> dev <interface_name>
#命令简写示例
ip r add default via 192.168.1.100 dev eth0
添加静态路由:
ip route add <destination_network> via <next_hop_ip_address> dev <interface_name>
既然有添加,就有相应的删除命令(略)。
查看网络配置的相关命令:
显示 IP 地址信息:
ip address show
ifconfig
显示网络接口信息:
ip link show
显示路由表信息:
ip route show
linux 网络配置好,还不能远程连接,我们需要能远程连接,当成服务器来用,需要安装网络管理工具和 openssh-server。
在 Linux 中配置 SSH 连接的加密算法
在Linux上安装SSH服务通常涉及使用包管理器来安装 openssh-server包
sudo apt install openssh-server # 安装sshserver
vim /etc/ssh/sshd_config # 编辑配置文件
配置 OpenSSH 服务器的加密算法
- 编辑 OpenSSH 服务器的配置文件:
打开 sshd_config 文件:
添加或修改:
PermitRootLogin yes
PasswordAuthentication yes
- 设置加密算法(Ciphers):
找到或添加 Ciphers 选项,并设置需要的加密算法。例如:
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr
3.设置 MAC 算法(MACs):
找到或添加 MACs 选项,并设置需要的消息认证码算法。例如:
MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha2-512
4.设置 Kex 算法(KexAlgorithms):
找到或添加 KexAlgorithms 选项,并设置需要的密钥交换算法。例如:
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
- 保存并关闭文件。
6.重新启动 SSH 服务:
sudo systemctl restart sshd
配置 OpenSSH 客户端的加密算法
- 编辑 OpenSSH 客户端的配置文件:
打开 ssh_config 文件:
sudo nano /etc/ssh/ssh_config
或者编辑用户级别的配置文件:
nano ~/.ssh/config
2.设置加密算法(Ciphers):
在文件中添加或修改 Ciphers 选项。例如:
Host *
Ciphers aes256-gcm@openssh.com,chacha20-poly1305@openssh.com,aes256-ctr
3.设置 MAC 算法(MACs):
添加或修改 MACs 选项。例如:
Host *
MACs hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,hmac-sha2-256,hmac-sha2-512
4.设置 Kex 算法(KexAlgorithms):
添加或修改 KexAlgorithms 选项。例如:
Host *
KexAlgorithms curve25519-sha256,curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256
因为有些旧版的客户端连接工具如secureCRT6,不支持新的加密算法,因此配置了SSH 的加密算法,如果客户端连接工具支持,则不需要配置算法,只需要:PermitRootLogin yes 和 PasswordAuthentication yes 这是必须的。当远程工具能连接后,基本上完成了大半了,这还没完,还需要安装其他的一些开发工具。
sudo apt update
sudo apt upgrade
sudo apt-get install gcc gdb make git vim
sudo apt install build-essential cmake gdb git vim binutils-doc cpp-doc gcc-6-locales gcc-6-doc manpages-dev autoconf autoconf-doc automake libtool libtool-doc bison bison-doc gcc-doc gdb-doc
gdbserver git-doc glibc-doc lrzip glibc-doc libstdc++-6-doc make-doc ed diffutils-doc perl-doc ctags vim-doc vim-scripts doc-base m4-doc vim-addon-manager glibc-doc-reference glibc-source pinfo
ttf-dejavu ttf-dejavu-core ttf-dejavu-extra python3-examples python3 python3-doc rename autoconf-archive fonts-lato sl cowsay linuxlogo screenfetch cmatrix asciinema powerline valgrind pkg-config
java ,python ,c /c++,go,docker 等,想装什么就装什么。
vc code需要安装的插件:wsl、cmake、c++编译器等
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/37fa909eedcc4b39b8b444380b7856ee.png
这样可以做到模拟在linux环境开发c++,但实际上是在windows上操作。同时实现在不同的操作系统编译和调试程序了。
在Windows11中安装WSL2配置python开发环境,看此篇:https://zhuanlan.zhihu.com/p/639611152
配置好开发环境,了解基本语法,已经成功了一半。
后续需要熟悉常用库的使用,例如集合、数据库驱动、网络连接、IO、操作系统底层接口。