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

原文地址:https://www.cnblogs.com/myfrank/p/10176332.html