有些东西不一样就是很难办。
比方说,线上服务器跑着CentOS 7(这都算很新了),用着gcc 4.9.2和glibc 2.22,你拿着个mbp跑着macOS用着几乎最新版Clang开开心心写着代码,本地编译测试都没问题,回头上线打包只是编译通不过也就罢了,就怕编译通过了回头行为不一样……
再说了,mac个bsd血统,O_DIRECT没有没关系,punch hole不行也认了,libaio这种内核内嵌的玩意没有你就没得选;
linux/的.h不一定能找到对应的;一票sh下的常用工具都不太一样就很烦……;
稍微上层一点的,你去哪儿找epoll是个问题,要不干脆kqueue写一套epoll在写一套? 所以说假设是在服务器上写比较偏底层的C/C++的,用mac大都要么满头的#ifdef,还来个虚拟机跑个模拟环境,不然就全天候ssh到编译机上准备挖坑,体验就很糟糕。 所以得看情形不是么……
写Java写Python(不含炼丹)写Golang用mac体验就很不错,写底层C/Cpp那还不如Win+SubSystem(不那么底层倒是无所谓了),更不如直接上linux了。
比方说,线上服务器跑着CentOS 7(这都算很新了),用着gcc 4.9.2和glibc 2.22,你拿着个mbp跑着macOS用着几乎最新版Clang开开心心写着代码,本地编译测试都没问题,回头上线打包只是编译通不过也就罢了,就怕编译通过了回头行为不一样……
再说了,mac个bsd血统,O_DIRECT没有没关系,punch hole不行也认了,libaio这种内核内嵌的玩意没有你就没得选;
linux/的.h不一定能找到对应的;一票sh下的常用工具都不太一样就很烦……;
稍微上层一点的,你去哪儿找epoll是个问题,要不干脆kqueue写一套epoll在写一套? 所以说假设是在服务器上写比较偏底层的C/C++的,用mac大都要么满头的#ifdef,还来个虚拟机跑个模拟环境,不然就全天候ssh到编译机上准备挖坑,体验就很糟糕。 所以得看情形不是么……
写Java写Python(不含炼丹)写Golang用mac体验就很不错,写底层C/Cpp那还不如Win+SubSystem(不那么底层倒是无所谓了),更不如直接上linux了。