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

2018-05-17 10:33:17 +08:00
 bigtom

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

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

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

4380 次点击
所在节点    问与答
10 条回复
nonkr
2018-05-17 12:20:53 +08:00
把需要的 linux 上的头文件拷贝到 mac 上
liuminghao233
2018-05-17 12:27:42 +08:00
我用 pd 装 ubuntu +clion
TheCure
2018-05-17 12:38:44 +08:00
首先, 你的代码肯定是要在 linux 上跑的, 所以你必须要一个虚拟机.

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

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

不过还是有点好奇楼主是在什么样的需求下需要直接上 epoll,因为在我印象里直接用 goroutine 处理并发就够好用了。
bigtom
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
2018-05-17 20:13:37 +08:00
@callofmx
感谢,原来还有这种操作!
mashiro233
2018-05-17 21:19:54 +08:00
@bigtom 感谢,学习了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/455516

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX