ubuntu 安装 python2
安装 python2 是因为我要在 Linux 中配置 Jsoncpp, 这个配置需要 Python2,所以如果是想用 Windows 的 Jsoncpp,并且使用 Windows 的 VS 运行,跳过这个即可
Windows 下 VS 使用 Jsoncpp,配置参考:https://xingzhu.top/archives/jsoncpp
- 由于接下来要使用
python
,所以先安装python
# 安装 python2.7.18 即可
# python3 不行,版本过高,会报错
sudo apt install python2
python2 --version
- 安装完成后我们可以使用如下命令来检查目前可用的 Python 版本:
ls /usr/bin/python*
- 在 Ubuntu 中切换默认 Python 版本
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 9
sudo update-alternatives --config python
# 可能出现以下场景,说明之前配置过默认方式
There are 2 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3 2 auto mode
1 /usr/bin/python2 1 manual mode
2 /usr/bin/python3 2 manual mode
Press to keep the current choice[*], or type selection number:
# 选择 python2 即可,也就是填写数字 1
- 查看默认版本
# 会看到 python 2.7.18
python --version
ubuntu 安装 mysql
- 安装
mysql
sudo apt update
sudo apt install mysql-server
- 安装完成后,MySQL 服务将自动启动。要验证 MySQL 服务器正在运行,请输入
sudo systemctl status mysql
- 初始化数据库
mysql -u root
# 然后设置密码,下次就能 mysql -u root -p 输入密码登录了
- 安装
mysql
头文件和静态库文件
# 安装了这个之后,就能调用 MYSQL 的功能函数
# 主要是在写程序中使用,使用 <mysql.h> 头文件
sudo apt-get install libmysqlclient-dev
- 由于安装后,
mysql.h
默认安装在/usr/include/mysql
这个目录中,因此每次调用mysql.h
,编译都需要指定头文件路径
g++ *.cpp -o main -I/usr/include/mysql -lmysqlclient
- 所以配置环境变量,将这个路径加到环境变量中
# 打开配置 .bashrc 文件,这是一个配置文件,每次启动机器都会加载这个配置
vim ~/.bashrc
# 在文件末尾加入这个
export CPLUS_INCLUDE_PATH=/usr/include/mysql:$CPLUS_INCLUDE_PATH
# 使配置立即生效,不执行这个,需要重启虚拟机才能加载到环境中
source ~/.bashrc
- 配置后
g++ *.cpp -o main -lmysqlclient
测试代码 (只是测试 MYSQL API 能否使用,也就是上述环境是否配置成功)
// localhost 是数据库服务器 IP 地址,也就是你数据库所在的主机 IP地址
// username 是用户名,password 是密码
// database 是数据库名,也就是你电脑数据库服务器上的数据库名,如果才下载 mysql,可以填写 mysql 默认自带的
// 后面参数默认即可
#include <stdio.h>
#include <mysql.h>
int main()
{
MYSQL *conn = mysql_init(NULL);
if (mysql_real_connect(conn, "localhost", "username", "password", "database", 0, NULL, 0) == NULL)
{
fprintf(stderr, "连接失败: %s\n", mysql_error(conn));
return 1;
}
printf("成功连接到数据库!\n");
mysql_close(conn);
return 0;
}
Linux 访问 Windows 数据库
这个可以跳过,就使用 Linux 下 MySQL 即可,但是我想操作的数据就保存在 Windows MySQL 下,而且还想访问 Windows 下的数据库,所以折腾了一下这个
建立防火墙规则
打开 Windows 的防火墙,找到高级设置
依次点击这两个
- 点击这个端口
- 填写端口号
名称任意指定
进行连接
- 首先设置 Windows MySQL 数据库权限,让其他机器能够访问
# 登录数据库
mysql -u root -p
-- 授予权限
CREATE USER 'username'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'username'@'%';
-- username 是你想要创建的用户名
-- password 是你想指定其他机器登录这数据库的密码验证
-- 通过这个创建的用户名和密码,再授予权限,其他机器能够通过这个用户登录到数据库,使用它
-- 刷新这个数据库权限
FLUSH PRIVILEGES;
- Linux 登录
mysql -u root -h Windows的 IP地址 -p
# 查看 Windows的 IP 地址
ipconfig
Linux 下 json 库安装
由于我是想用 Linux 下的 jsoncpp,并且在 SSH 远程连接下使用命令行编译程序,所以如此配置
若想使用 Windows 的 jsoncpp,并且在 VS 上运行,就需要配置 VS 环境,参考: https://xingzhu.top/archives/jsoncpp
- 官网下载
json-cpp
https://sourceforge.net/projects/jsoncpp/files/
或者我的百度网盘: 链接: https://pan.baidu.com/s/1qwzWf9hOHmTr0SCERTdoog 提取码:0278
- 下载
scons
http://sourceforge.net/projects/scons/files/scons/2.1.0/scons-2.1.0.tar.gz/download
或者我的百度网盘: 链接: https://pan.baidu.com/s/1tl1B6mZNM2M26Nx-biwAqA 提取码:0278
- 解压
# 目录的选择根据自身需求
tar -zvxf scons-2.1.0.tar.gz
tar -zvxf jsoncpp-src-0.5.0.tar.gz
- 安装
# 进入刚刚解压的 scons-2.1.0 文件夹中
cd scons-2.1.0
sudo python setup.py install
# 进入刚刚解压的 jsoncpp-src-0.5.0 文件夹中
cd jsoncpp-src-0.5.0
sudo scons platform=linux-gcc
- 配置
# 将 /jsoncpp-src-0.5.0/include/json 拷贝到 /usr/include
cd jsoncpp-src-0.5.0
sudo cp -r ./include/json /usr/include
# 将 /jsoncpp-src-0.5.0/libs/linux-gcc-11 目录下的 libjson_linux-gcc-5.3.1_libmt.a 拷贝到 /usr/local/lib 下
# 由于 gcc 版本不同,可能解析后名字不同,这里进入 libs目录 ls 查看一下,在逐步进入拷贝
cd ./libs/linux-gcc-11
sudo cp -r libjson_linux-gcc-11_libmt.a /usr/local/lib
# 由于这个静态库太长,重命名一下
sudo mv /usr/local/lib/libjson_linux-gcc-11_libmt.a /usr/local/lib/libjson.a
- 测试
#include<iostream>
#include<json/json.h>
using namespace std;
int main()
{
string test = "{\"id\":2021,\"name\":\"Happy New Year\"}";
Json::Reader reader;
Json::Value value;
if(reader.parse(test,value)) {
if(!value["id"].isNull()) {
cout << value["id"].asInt() << endl;
cout << value["name"].asString() << endl;
}
}
return 0;
}
g++ test.cpp -o test -L/usr/local/lib -ljson
./test
// 输出
2021
Happy New Year
- 配置环境变量
- 由于每次编译链接都需要指定这个库的搜索路径
/usr/local/lib
,所以将其加到链接器中,执行文件时指定链接器搜索的路径
export LIBRARY_PATH=/usr/local/lib:$LIBRARY_PATH
# 这样之后,就能直接使用
# 注意使用过程中,要去头和去尾,也就是 lib 和 .a 要去掉,json 才是实际库名
g++ test.cpp –o test -ljson