由于项目要用到husky的python版,pyhusky。所以要在本机运行husky。不得不说,c++的项目的可移植性和兼容性真的差java好几条街,所以编译这个看起来简单,但实操坑非常多。
坑1 —— zeromq
我很早以前就在mac上通过brew装好了zeromq,这次在编译husky的时候还报了找不到。最后发现homebrew安装的zmq只是一个底层的c版本,而不是合适版本。这里我只好手动下载了libzmq和cppzmq。clone下来后大概流程就是:
- mkdir build & cd build
- make ..
- make -j4
- make install
可以说是build一个项目最典型的操作了。刚开始不理解学长讲的要把hpp放在系统的include里,后来了解了一下原来cpp会把自己的一些hpp文件(类似快捷方式)放在/usr/local/include文件目录下,其他proj就可以去调用了。而make install里面集成了这一步。
坑2 —— libhdfs3
这个库是cpp用来连接hdfs的,但放弃维护了,所以只能找别人的,这里我找到了一个可用的
1 | git clone git@github.com:ContinuumIO/libhdfs3-downstream.git |
这个需要提前装好gtest和gmock,就要去下载gtest和gmock,还是一样的build
坑3 —— build完Master依然不存在
在make master之后,应该出现Master应用程序,但我的程序里没出现。后来才知道因为mac的默认文件格式是不支持大小写敏感的,所以会有问题。这样我需要去改master下build的CMakeList.txt,如下:
1 | MasterHusky |
原来这里的MasterHusky叫Master,与build出的master文件冲突,所以要将它改成MasterHusky的名字,下面相应的地方都要改,然后再重新cmake就可以了。
坑4 —— Daemon无法执行
刚开始不知道要跑起来master以后再跑daemon,daemon也是build出来的,但刚开始不能跑,我需要装好libhdfs3以后,先运行master,再运行daemon(master不能停顿太久,因为可能挂掉了)
坑5 —— bindings路径问题
这个是最大的一个坑,我需要把husky目录下的bindings放在自己执行./Daemon和./Master的地方才可以!!!
例如我是直接在release里执行的,就需要把bindings文件夹和crawler下的hcrawl都放在release目录下!