window中搭建vscode的linux开发环境

1. 下载VScode

vscode官网下载安装vscode.

2. 下载MinGw

MinGw (Minimalist GNU for Windows),它是把gun的一些头文件以及编译工具入g++,gcc等移植到win平台的产物。但并不是所有的posix API都做了移植。 这一点可以参阅cygwin和Mingw的区别。比如说, /sys/socket.h这样的头文件,在安装过MinGw后仍然是不能使用的,MinGw并没有包含此头文件。
下载MinGW,地址 http://mingw-w64.org/doku.php/start
下载完成之后添加MinGw的环境变量。只需要把MinGw的bin目录加入到环境变量中即可。
在这里插入图片描述

然后用powershell运行g++ --version命令验证MinMW已经安装成功。
在这里插入图片描述

3. 运行调试需要三个vs文件

vs官方文档 里有这三个文件用途以及如何配置的说明。

  1. c_cpp_properties.json,配置一些基本属性,例如c++标准、头文件路径、编译器路径等在这里插入图片描述
    c_cpp_properties.json内容
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.18362.0",
            "compilerPath": "C:/Program Files (x86)/mingw-w64/bin/g++.exe",
            "cStandard": "c89",
            "cppStandard": "c++98",
            "intelliSenseMode": "clang-x86"
        }
    ],
    "version": 4
}
  1. task.json,告知vscode如何构建项目。打开方式
    在这里插入图片描述
    task.json 内容
{
    "version": "2.0.0",
    "tasks": [
      {
        "type": "shell",
        "label": "g++.exe build active file",
        "command": "C:/Program Files (x86)/mingw-w64/bin/g++.exe",
        "args": [
          "-g",
          "${file}",
          "-o",
          "${fileDirname}/${fileBasenameNoExtension}.exe"
        ],
        "options": {
          "cwd": "C:/Program Files (x86)/mingw-w64/bin"
        },
        "problemMatcher": [
          "$gcc"
        ],
        "group": {
          "kind": "build",
          "isDefault": true
        }
      }
    ]
  }
  1. launch.json(启动gdb进行调试)
    在这里插入图片描述
    launch.json内容
{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "输入程序名称,例如 ${workspaceFolder}/a.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/path/to/gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "Set the disassembly flavor to Intel for gdb",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                },
                {
                    "description": "Test",
                    "text": "python import sys;sys.path.insert(0, '/usr/share/gcc/python');from libstdcxx.v6.printers import register_libstdcxx_printers;register_libstdcxx_printers(None)",
                    "ignoreFailures": false
                }
            ]
        }
    ]
}
好的,让我来尝试回答您的问题。 首先,要实现获取百度首页源码需要使用socket网络编程。但是,因为您说没有<sys/socket.h>和<arpa/inet.h>,我们需要手动实现这两个头文件中的函数。以下是一个简单的示例代码: ```c #include<stdio.h> #include<string.h> #include<unistd.h> #include<errno.h> #include<fcntl.h> #include<netinet/in.h> #include<netdb.h> #define PORT 80 #define MAX_BUFFER 1024 int main(int argc, char *argv[]) { int sockfd, bytes; char buffer[MAX_BUFFER]; char *header = "GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n"; struct sockaddr_in server_addr; struct hostent *host; if (argc != 2) { printf("Usage: %s <hostname>\n", argv[0]); return -1; } host = gethostbyname(argv[1]); if (host == NULL) { perror("gethostbyname failed"); return -1; } sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("socket creation failed"); return -1; } memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(PORT); server_addr.sin_addr = *((struct in_addr*)host->h_addr); if (connect(sockfd, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0) { perror("connection failed"); return -1; } bytes = send(sockfd, header, strlen(header), 0); if (bytes < 0) { perror("send failed"); return -1; } memset(buffer, 0, MAX_BUFFER); while ((bytes = read(sockfd, buffer, MAX_BUFFER - 1)) > 0) { buffer[bytes] = '\0'; printf("%s", buffer); } close(sockfd); return 0; } ``` 这段代码实现了通过socket连接获取百度首页源码。我们通过HTTP协议向百度的80端口发送GET请求,并读取服务器的响应。其中,hostname为命令行参数传入的地址。 希望我的回答能够解决您的问题,如果您还有任何疑问,可以随时问我哦!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值