emqx源码编译
以下,||分界线||之上的内容已经不适用了,可以略过,继续往下看
1 下载 github上下载
2 找台虚拟机,安装编译所需的环境,erlang make等
3 执行make命令
重点说一下第3步:
主要是make命令报错
解释:执行make命令后,依赖包全部自动下载到deps文件夹内,自动执行编译,但是这个过程中,这些依赖往往缺少一些文件等,可以手动去修改依赖包的makefile
比如 gen_logger报错,可以把哪些已经通过make的依赖包中的makefile拿过来,放到这个文件夹下
上图是一个能用的makefile内容,我是把lager 直接修改成为gen_logger(不改,直接把makefile拿过来,也能用。。。),这样就可以通过编译了,当然如果报错缺少文件,从其他依赖包里拿过来就行(下图报错缺少tools.mk)
再次执行,可以看到 已经不包 gen_logger相关的错误了,说明这个gen_logger依赖已经通过下载、编译过程了,
4 拿到编译后的文件,运行
--------------------------------------------------------------------------------------------------
分界线
--------------------------------------------------------------------------------------------------
大家可以理解为:以上内容是本人编译emq 2版本遇到的问题,而且解决方法很不成熟,不建议参考
由于看到有人转载,怕误导大家,我再说明一下
以emqx4.0.7版本为例
1、安装erlang环境
可以参考:https://www.cnblogs.com/shanfeng1000/p/11951703.html
这里需要注意一下,要按照emqx官网说明,比如4.0.7版本,编译需要 Erlang/OTP R21+ ,也就是说 需要 Erlang/OTP 21版本以上的,我安装的是22.0版本的otp
安装erlang编译环境非常非常重要,大家安装好环境以后,再往下继续
2、下载源码
https://github.com/emqx/emqx
根据自己的需要选择 tag版本 我用的是4.0.7
3、执行make
我在执行make的时候发现报错,大概的意思是 rebar3命令找不到(截图懒得重现了)
那好,开始安装人rebar3
我看网上大概有2种方法,一种是下载rebar3源码,然后编译;另一种是直接下载编译好的rebar3。选择第二种
比较简单的做法是:
1、下载 wget https://s3.amazonaws.com/rebar3/rebar3
2、赋权chmod +x /home/hylink/rebar3 (赋权)
3、./rebar3 local install (这一步不做好像也可以,不过还是执行一下)
4、把rebar3扔到 /usr/bin目录下(这一步的目的是环境变量,大家应该懂,也可以通过配置环境变量的方法实现,可以参考https://blog.csdn.net/ctwy291314/article/details/104550966)
5、验证 rebar3 --version
4、等待make执行完毕
为什么还要写4,因为make执行非常慢,而且容易卡住,卡住后可以取消,然后再次执行make
理论上 1 2 3没问题的话,4应该会出结果,当然,还遇到其他一些问题
emqx3 和emqx4版本 与emq 2版本,编译后文件位置不同,emqx3和emqx4的是在_build文件夹内
再说一下遇到的问题
1、按照emqx官方的readme,我使用emqx-rel项目,执行make没有成功,有兴趣的小伙伴可以尝试一下
我要修改emqx的源码,所以我是修改emqx的src下的文件后,在emqx目录内执行的make 就是截图中emqx407目录内
2、还有个问题 就是make过程中,有时候报错,大家可以多尝试几次。如果尝试多次还报相同的错误,那就要找找原因了
可以观察一下Makefile文件 如果遇到很奇怪的问题 也可以make clean(会清除所有下载的lib和plugins) 然后重新执行 make或者make compile