woaidaima2016 发表于 2022-4-16 21:17:51

将 Linux Makefile 工程转换成 VS 工程

本文以 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
sudo yum install samba samba-client
修改 samba 配置
vim /etc/samba/smb.conf
在最后增加一段,其中 /root/projects 是要共享的目录


path = /root/projects
valid users=root
writable=yes
重启 smb 服务
systemctl restart smb
设置共享目录读写权限
chmod -R 777 /root/projects
关闭linux防火墙
systemctlstopfirewalld
关闭 selinux
如果是临时关闭,可以用下面的命令关闭,不需要重启

setenforce 0
如果要一直关闭,可以修改文件 /etc/sysconfig/selinux,修改成 SELINUX=disabled

这时应该可以在 windows 用 \IP 访问到 Linux 的目录

创建映射网络驱动器
在 windows “我的电脑” 里创建映射网络驱动器


创建后会多出一个网络驱动器 Z

Step 4 生成 VS 工程文件,设定生成命令和生成目录
下载 vclinux https://github.com/robotdad/vclinux
下载回来的是两个 sh 脚本,放到任意的目录(如 /root/bin)

执行生成命令cd /root/projects
sh /root/bin/genvcxproj.shredis-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 目录
cd /root/projects/redis-output
mkdir conf
cp /root/projects/redis-5.0.5/redis.conf conf/
设定远程调试参数
在“工具->选项”菜单中的“跨平台”页设定 SSH 连接参数

开始调试
打开 server.c, 在 main 函数打断点,然后按 F5 开始调试


可选步骤
CentOS 7 升级到 gcc 7.3
默认的 gcc 版本比较低,一些 C/C++ 的新功能无法使用,需要升级
yum -y install centos-release-scl
yum -y install devtoolset-7-gcc devtoolset-7-gcc-c++ devtoolset-7-binutils
scl enable devtoolset-7 bash
升级后的效果


scl 命令启用只是临时的,退出shell或重启就会恢复原系统gcc版本。如果要长期使用 gcc 7.3的话,可以修改 profile 文件
echo "source /opt/rh/devtoolset-7/enable" >> /etc/profile

页: [1]
查看完整版本: 将 Linux Makefile 工程转换成 VS 工程