開發環境: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 爽快開發調試了~!
開發環境:vs2017+samba+gdb server