win10-VMware(ubuntu)-VS2019-C++-跨平台编译(1)

硬件环境:host是win10 ,VMware下装了一个ubuntu.
我想完成的功能:同一个工程,在win10中VS2019可以编译,ubuntu下也可以编译。
ubuntu 下创建共享文件夹\share   ip:192.168.9.81
win10 下用VS2019创建工程并放在ubuntu 下。
1.虚拟机设置
2.win10 -ubuntu创建共享文件夹-Samba设置
3.win10-VS创建项目并编译
4.ubuntu-makefile编译

 


1.虚拟机设置

sudo apt-get install open-vm-tools    #安装虚拟机的工具

sudo vmhgfs-fuse .host:/share  /home/tang/share -o allow_other -o uid=1000

/etc/fstab:
.host:/shared_folder /shared_folder fuse.vmhgfs-fuse allow_other,uid=1000,gid=1000,auto_unmount,defaults 0 0

2.win10 -ubuntu创建共享文件夹-Samba设置

apt-get install samba

#配置文件位置: /etc/samba/smb.conf 
[share]
comment = my share directory
path = /share
browseable = yes
writable = yes
guest ok =yes

mkdir /share
chmod 777 /share

ls -L|grep  #前面的输出成为后面的输入

smbd             #启动
pkill smbd       #杀掉
ps -ef|grep smbd #查看

3.win10-VS创建项目并编译
  用VS编译程序:

1.main.cpp代码:

// main.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include<string.h>
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#ifdef WIN32      //预处理,会在编译前
   #include <windows.h>
   #pragma comment(lib,"ws2_32.lib")
#else
  #include <sys/types.h>
  #include <sys/socket.h>
  #include <unistd.h>
  #include <arpa/inet.h>
  #define  closesocket close //定义宏
#endif

int main()
{
#ifdef WIN32
    WSADATA ws;
    WSAStartup(MAKEWORD(2, 2), &ws);
#endif
    //1.初始化 
    for (int i = 0; i < 1000; i++)
    {
        int sock = socket(AF_INET, SOCK_STREAM, 0);
        if (sock == -1)
        {
            printf("create fail!\n");
            return -1;
        }
        printf("[%d]", sock);
        sockaddr_in saddr;
        unsigned short port = 8080;
        saddr.sin_family = AF_INET;
        saddr.sin_port = htons(port);     //本地字节序-> 网络字节序
        saddr.sin_addr.s_addr = htonl(0); 
        if (bind(sock, (sockaddr*)&saddr, sizeof(saddr)) != 0)
        {
            printf("bind port %d failed!\n", port);
        }
        printf("bind port %d sucessed!\n", port);
        listen(sock, 10);                //队列的个数

        sockaddr_in caddr;
        socklen_t len = sizeof(caddr);
        int client = accept(sock, (sockaddr*)&caddr, &len);
        printf("accpet  %d\n", client);
        char* ip = inet_ntoa(caddr.sin_addr);
        unsigned short cport = ntohs(caddr.sin_port);
        printf("client ip is %s,port is %d\n",ip,cport);
        closesocket(sock);
    }
    getchar();
    return 0;
    //  }
      //2.引用
      // 编译 make sockettest 
      // 运行 ./sockettest
      // 查看进程限制的个数  ulimit -n   一个进程需要超过1024个
      // 修改进程限制的个数  ulimit -n 3000
      //3.结束
}

4.ubuntu-makefile编译

tcpserver:main.cpp
       g++ main.cpp -o tcpserver -std=c++11

命令说明
 

#$+ 对应依赖项  $@对应目标  -fpic 代码与位置无关 -shared 编成动态库 -std=c++11
#tab键而非空格键

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值