本文以 redis 为例说明如何用 VS 编译和调试 Linux 下的工程
环境
Windows 10
VS 2019
CentOS 7(虚拟机)
redis-5.0.5
Step 1 安装 VS 2019
到微软官网下载最新 VS(目前是 2019), 个人使用可以用 community 版本,安装时注意要安装 Linux 组件
Step 2 源码准备
下载 redis 源码包,放到 Linux 的 /root/projects 目录并解压
Step 3 设定网络共享,将 /root/projects 共享
注:Linux 最好设置为静态 IP
- 安装 samba
1 | sudo yum install samba samba-client |
- 修改 samba 配置
1 | vim /etc/samba/smb.conf |
在最后增加一段,其中 /root/projects 是要共享的目录
1 | [share-root] |
- 重启 smb 服务
1 | systemctl restart smb |
- 设置共享目录读写权限
1 | chmod -R 777 /root/projects |
- 关闭linux防火墙
1 | systemctl stop firewalld |
- 关闭 selinux
如果是临时关闭,可以用下面的命令关闭,不需要重启
1 | setenforce 0 |
如果要一直关闭,可以修改文件 /etc/sysconfig/selinux,修改成 SELINUX=disabled
这时应该可以在 windows 用 \IP 访问到 Linux 的目录
- 创建映射网络驱动器
在 windows “我的电脑” 里创建映射网络驱动器
创建后会多出一个网络驱动器 Z
Step 4 生成 VS 工程文件,设定生成命令和生成目录
下载 vclinux https://github.com/robotdad/vclinux
下载回来的是两个 sh 脚本,放到任意的目录(如 /root/bin)执行生成命令
1
2cd /root/projects
sh /root/bin/genvcxproj.sh redis-5.0.5 redis-5.0.5.vcxproj执行后,会生成 /root/projects/redis-5.0.5/redis.vcxproj 文件
设定生成命令和生成目录
在 VS 中打开 redis.vcxproj (通过 Z 盘)
打开项目属性,设定输出目录,注意选项正确的平台(X86)
设定远程生成命令
完成后,按 F7 生成 redis。生成的程序文件输出到 /root/projects/redis-output/bin
Step 5 远程调试设定
- 设定调试程序和参数,这里调试 redis-server
复制 redis.conf 到 /root/projects/redis-output/conf 目录
1 | cd /root/projects/redis-output |
设定远程调试参数
在“工具->选项”菜单中的“跨平台”页设定 SSH 连接参数开始调试
打开 server.c, 在 main 函数打断点,然后按 F5 开始调试
可选步骤
- CentOS 7 升级到 gcc 7.3
默认的 gcc 版本比较低,一些 C/C++ 的新功能无法使用,需要升级
1 | yum -y install centos-release-scl |
升级后的效果
scl 命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。如果要长期使用 gcc 7.3的话,可以修改 profile 文件
1 | echo "source /opt/rh/devtoolset-7/enable" >> /etc/profile |