Visual Studio 2017开发linux程序使用实例及原理简析
生活随笔
收集整理的這篇文章主要介紹了
Visual Studio 2017开发linux程序使用实例及原理简析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.下載安裝vs開發linux程序的工具包
2.創建一個工程,選擇跨平臺里面的linux平臺
3.寫一段測試代碼,這里就可以包含linux的系統頭文件編譯,不過vs下還是現實紅的
#include <cstdio> #include <stdlib.h> #include <stdio.h> #include <string.h>#include <iconv.h> #include <sys/stat.h> #include <sys/types.h> #include <sys/file.h> #include <unistd.h> #include <sys/mman.h> #include <fcntl.h>#include <string> #include <iostream> #include <istream> #include <iosfwd> #include <sstream> #include <fstream> using namespace std;int fd_ = 0; int size_ = 0; char *buff_ = nullptr;void open_file(std::string file_name) {fd_ = open(file_name.c_str(), O_RDONLY);if (fd_ == -1){size_ = 0;}else{struct stat st;int r = fstat(fd_, &st);if (r == -1){size_ = 0;close(fd_);}else{size_ = st.st_size;}} }void unmap_file() {if (fd_ != -1){close(fd_);munmap(buff_, size_);} } //if data is too big,create file spilt more file_index,mmap more times(hfrz ptr as start addr) int mmap_file(int fd, char *buff) {if (fd == -1){return -1;}buff = (char *)mmap(NULL, size_, PROT_READ, MAP_PRIVATE, fd_, 0);if (buff == (void*)-1){std::ostringstream oslog;oslog << "mmap failed:" << strerror(errno);cout << oslog.str() << endl;close(fd);return -1;}return 0; }int main() {char *buff = (char *)malloc(1024);const char *str = "hello world";memcpy(buff, str, strlen(str)+1);printf("hello from ConsoleApplication1!\n");mmap_file(23, buff);getchar();return 0; }
然后選中調試,就彈出一個輸入遠程主機的信息,這里就和xshell使用ssh協議連接信息一樣的輸入:
4.編譯調試,有個調試窗口要調出來,然后就可以看見linux控制臺的輸出信息了
編譯輸出控制臺
5.登陸遠程主機,可以看見啟動的程序和源代碼了
6.簡要的分析一下原理
從vs編譯的輸出控制臺我們可以看出編譯是使用mingw32交叉編譯,然后使用ssh協議將源代碼拷貝到目標主機,看見gdbserver進程了,應該是vs使用ssh協議作為client與遠程主機的gdbserver調試
一些配置信息也說明了這一點:
總結
以上是生活随笔為你收集整理的Visual Studio 2017开发linux程序使用实例及原理简析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: boost智能指针之shared_ptr
- 下一篇: 统一建模语言UML要点全面简析