bigtom
V2EX  ›  问与答

如何在 Mac 上开发 Linux 系统程序

  •  
  •   bigtom · May 17, 2018 · 5540 views
    This topic created in 3097 days ago, the information mentioned may be changed or developed.

    使用 golang 在 mac 上进行开发,需要使用 epoll,因为 mac 上面没有 epoll。所以编译和测试都需要在 Linux 环境下进行。我用 vagrant 开了个 centos7 来做编译和测试环境,基本解决了问题。

    但是,在编写代码的过程中,ide 还是会提示我找不到相应的系统调用。这还蛮不爽的。

    大家有什么好的解决方法吗?

    10 replies  •  2018-05-17 21:19:54 +08:00
    nonkr
    nonkr
    May 17, 2018 via iPhone❤️1
    1
    把需要的 linux 上的头文件拷贝到 mac 上
    liuminghao233
    liuminghao233
    May 17, 2018 via iPhone
    2
    我用 pd 装 ubuntu +clion
    TheCure
    TheCure
    May 17, 2018❤️1
    3
    首先, 你的代码肯定是要在 linux 上跑的, 所以你必须要一个虚拟机.

    然后 goland 配置 go remote, remote run 和 debug
    jam1024
    jam1024
    May 17, 2018
    4
    装个 docker
    wangfengmadking
    wangfengmadking
    May 17, 2018
    5
    docker & docker-compose +1
    DonaidTrump
    DonaidTrump
    May 17, 2018
    6
    golang 怎么用 epoll 啊
    mashiro233
    mashiro233
    May 17, 2018❤️1
    7
    @tulongtou

    引入标准库 syscall 就可以了 `syscall.EpollCtl`。

    不过还是有点好奇楼主是在什么样的需求下需要直接上 epoll,因为在我印象里直接用 goroutine 处理并发就够好用了。
    bigtom
    bigtom
    OP
    May 17, 2018
    8
    @mashiro233
    其实也没啥需求,自己瞎搞着玩儿。
    同意其实绝大多数情况下 goroutine 处理并发就够好用了。但是 epoll 和 goroutine 并不是一个层面上的事情。goroutine 是计算能力上的并行,而 epoll 负责搞定异步 io。一般情况下我们可以给每个请求开一个 goroutine 处理,并在处理结束后销毁这个 goroutine。但是如果要维持大量的长连接(websocket 服务器等),却给每个长连接都起一个 goroutine 等着就蛮浪费的。可以参考这篇文章 https://medium.freecodecamp.org/million-websockets-and-go-cc58418460bb
    bigtom
    bigtom
    OP
    May 17, 2018
    9
    @callofmx
    感谢,原来还有这种操作!
    mashiro233
    mashiro233
    May 17, 2018 via Android
    10
    @bigtom 感谢,学习了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   518 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 21:29 · PVG 05:29 · LAX 13:29 · JFK 16:29
    ♥ Do have faith in what you're doing.