V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
bigtom
V2EX  ›  问与答

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

  •  
  •   bigtom · 2018-05-17 10:33:17 +08:00 · 4408 次点击
    这是一个创建于 2411 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    然后 goland 配置 go remote, remote run 和 debug
    jam1024
        4
    jam1024  
       2018-05-17 12:38:57 +08:00
    装个 docker
    wangfengmadking
        5
    wangfengmadking  
       2018-05-17 12:57:00 +08:00
    docker & docker-compose +1
    tulongtou
        6
    tulongtou  
       2018-05-17 14:10:11 +08:00
    golang 怎么用 epoll 啊
    mashiro233
        7
    mashiro233  
       2018-05-17 15:41:15 +08:00   ❤️ 1
    @tulongtou

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

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