1. 程式人生 > >開發環境:vs2017+samba+gdb server

開發環境:vs2017+samba+gdb server

intel log virt xshel system 自動啟動 匿名訪問 自動 配置

距離入職還有兩周不到,接老大的任務,先自己學習 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