开发环境:vs2017+samba+gdb server

距离入职还有两周不到,接老大的任务,先自己学习 Linux 编程。作为一个渣渣,vim 这种编辑器之神完全驾驭不住,还是希望能够使用世界上最好的 IDE —— Visual Studio 继续我的开发工作。好在 VS 最新版本 2017 已经原生支持 Linux 开发,问题就在于如何配置起来。

具体情况是这样的:

  • 编写代码的环境是 Windows 10 + Visual Studio 2017 Enterprise (不知道 Community 支不支持)
  • 运行代码的环境是使用 VirtualBox 下 CentOS 7 Minimal

实现目标:

  • 使用 #include 时能够引入 /usr/include 和 /usr/local/include 的文件,并由此实现 IntelliSense 自动提示
  • 自动调用 gcc 编译
  • 支持 gdb 调试,包括断点、查看堆栈、查看内存等

1. 安装配置 CentOS

我选用的是 CentOS 7 Minimal 版本,安装很简单,根据提示就好。

有一点要注意,为了能使用 Samba 服务,在 VirtualBox 这个虚拟机的“网络”设置中,要启用两个网卡,网卡1使用 NAT,目的是为了 CentOS 能够连上外网,网卡2使用仅主机(Host-Only)网络,目的是 Windows 能够访问 CentOS。一开始设置 Host-Only 时总是提示未指定网卡(也无法指定),最后发现是 VirtualBox 的桥接驱动没装上,重装 VirtualBox 之后就好了。

系统装好后,需要继续安装和配置需要的组件。

安装 ifconfig 和 vim:

# yum -y install net-tools
# yum -y install vim*

安装开发环境:

# yum -y groupinstall development

安装 gdb server 和 samba:

# yum -y install gdb-gdbserver
# yum -y install samba samba-client samba-common

接下来配置防火墙,否则 Windows 无法访问 CentOS:

# firewall-cmd –permanent –zone=public –add-service=samba
success
# firewall-cmd –reload
success

配置 samba:

# cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
# vim /etc/samba/smb.conf

文件修改为:

[global]
        workgroup = WORKGROUP    # 改为 WORKGROUP,和 Windows 中一致
        security = user    # 改为 user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

        map to guest = bad user    # 加上这行,允许匿名访问

[homes]
# 不改

[printers]
# 不改

[print$]
# 不改

# 加上这节
[USR]
        path = /usr
        read only = Yes
        browseable = Yes
        guest ok = Yes

保存后,启用 samba 并设置开机自启即可:

# systemctl enable smb nmb
# systemctl start smb
# chkconfig --level 35 smb on

这时候在 Windows 里访问 \\192.168.56.101 (Host-Only 虚拟机的 IP,在 CentOS 里用 ifconfig 可以看到),应该可以看到一个叫做 usr 的目录,对应的就是 CentOS 中的 /usr,只读。

接下来还要配置 SSH:

# vim /etc/ssh/sshd_config

主要是把以下几行开头的井号去掉:

Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::

配置一下访问权限:

# vim /etc/hosts.allow

文件末尾加上(10.0.2.2 对应网卡1也就是 NAT,192.168.56.1 对应网卡2也就是 Host-Only):

sshd:10.0.2.2
sshd:192.168.56.1

以及文件:

# vim /etc/hosts.deny

末尾加上:

sshd:All

至此,CentOS 就配置好了。

2. 设置 XShell 和 CentOS 随 Windows 开机自启

下载安装 XShell,测试连接到 192.168.56.101 是否正常,如果正常,用以下命令行可以在启动 XShell 时自动连接:

xshell.exe "Develop-1"

这个“Develop-1”是 XShell 中的一个会话名称。

另外我还想在启动 Windows 时自动启动 CentOS 这个虚拟机,但是并不希望显示窗口,所以可以创建一个 BAT 文件并放置到 开始 > 启动 中:

@"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" startvm "7b71133c-5326-4c8e-b609-16b9cb23b91e" --type headless

注意,一个是 VirtualBox 的安装目录,一个是虚拟机的 UUID。

3. 设置 Visual Studio 2017

首先在安装 VS2017 时,一定要勾选“使用 C++ 的 Linux 开发”。

安装好后,可以创建一个工程测试,具体是“跨平台 > Linux > 空项目(Linux)”。

注意设置项目属性中的“VC++ 目录 > 包含目录”,设置为“\\192.168.56.101\usr\include;\\192.168.56.101\usr\local\include”。嫌麻烦的话,可以对 \\192.168.56.10\usr 进行驱动器映射。

最后,创建 .c 文件,编译调试。首次调试时需要设置 Linux 主机的地址和账户信息,输入 192.168.56.101 和端口 22,账号密码依据情况即可。

一切妥当之后,就可以用 VS 爽快开发调试了~!

posted @ 2017-05-20 00:36  mfmans  阅读(1356)  评论(0编辑  收藏  举报