使用build-env-1.3.1镜像编译Doris 0.14.0出现ev_http_server.cpp.o构建失败错误
问题根因
Apache Doris 0.14.0 版本适配的构建环境镜像为apache/incubator-doris:build-env,你使用的build-env-1.3.1镜像内预装的brpc(butil组件属于brpc)版本过高,新版本butil::tcp_listen方法已经移除了第二个布尔类型的端口复用控制参数,导致旧版本Doris的代码调用时参数不匹配编译失败。
解决方案
方案1:更换匹配的构建镜像(最推荐)
直接使用Doris 0.14.0官方指定的构建镜像启动容器重新编译即可,启动命令修改为:docker run -it -v /xxx/.m2:/root/.m2 -v /xxx/apache-doris-0.14.0-incubating-src/:/root/apache-doris-0.14.0-incubating-src/ apache/incubator-doris:build-env进入容器后先清理之前的编译缓存,再重新执行编译命令即可。
方案2:修改代码适配现有镜像
如果你不想更换构建镜像,可以直接修改源码兼容新版本brpc:
打开源码路径下的src/http/ev_http_server.cpp文件,找到第150行代码:_server_fd = butil::tcp_listen(point, true);删除第二个冗余参数,修改为:
_server_fd = butil::tcp_listen(point);保存后重新执行编译即可,新版本brpc默认已经开启端口复用,删除参数不会影响原有功能。
内容的提问来源于stack exchange,提问作者volity
相关产品推荐
相关产品推荐

