Ubuntu下使用erlang.mk编译Erlang代码报找不到-lexpat错误如何解决
编译报错解决指南
原始报错信息
Getting Xabber Web client .... done. Copying Xabber Web files to 'priv' directory ........ done. make[1]: Entering directory '/home/isachi2004/xabber-websocket /deps/fast_xml' cc -o priv/lib/fxml.so c_src/fxml.o -lexpat -L -lei -shared /usr/bin/ld: cannot find -lexpat collect2: error: ld returned 1 exit status c_src/Makefile.erlang.mk:24: recipe for target 'priv/lib/fxml.so' failed make[2]: *** [priv/lib/fxml.so] Error 1 Makefile:25: recipe for target 'pre-app' failed make[1]: *** [pre-app] Error 2 make[1]: Leaving directory '/home/isachi2004/xabber-websocket /deps/fast_xml' erlang.mk:4512: recipe for target 'deps' failed make: *** [deps] Error 2
问题根因
报错核心为/usr/bin/ld: cannot find -lexpat,表示编译fast_xml依赖时,链接器无法找到系统中的expat XML解析库的开发版本,属于Ubuntu系统缺失对应系统依赖包导致的常见编译问题。
解决步骤
- 第一步:安装缺失的expat开发依赖包
执行命令:sudo apt update && sudo apt install -y libexpat1-dev - 第二步:安装基础编译工具与Erlang开发依赖(避免后续出现其他链接类报错)
执行命令:sudo apt install -y build-essential erlang-dev - 第三步:清理之前的编译残留文件,重新执行编译
执行命令:make clean && make
可选排查验证
如果执行完上述步骤仍然报错,可以执行以下命令确认expat库已经正确安装到系统路径:
ldconfig -p | grep libexpat
正常执行会输出至少一行包含libexpat.so的路径信息,说明库已经正确安装。
内容的提问来源于stack exchange,提问作者Sir Isaac
相关产品推荐
相关产品推荐

