Mac安装marty执行sudo make报library not found for -lm错误
报错场景
在Mac设备上编译安装marty,执行sudo make时触发链接阶段报错:
ld: library not found for -lm
根因
MacOS(Darwin内核)没有独立拆分的libm数学库,相关数学函数实现已经整合进系统基础库libSystem中,编译时不需要额外加-lm链接参数。多数面向Linux开发的项目Makefile默认硬编码了-lm链接项,在Mac上编译就会触发找不到库的错误;另外如果本地没安装Xcode命令行工具,系统库路径未被正确识别,也会抛出同类报错。
解决步骤
- 先补全基础编译环境:终端执行
xcode-select --install,按照弹出的引导窗口完成Xcode命令行工具安装,安装完成后重启终端,回到项目目录先执行make clean清理之前的编译缓存,再重试编译。 - 如果装完工具链仍报错,直接修改项目根目录下的Makefile:全局搜索
-lm字段,把所有匹配到的-lm参数直接删除即可,Mac环境下不需要单独链接数学库。 - 改完配置后再次执行
make clean清理中间文件,再执行sudo make完成编译安装即可。
注意:不要尝试通过包管理器安装独立的libm包,Mac平台没有官方独立分发的libm,第三方源提供的同名包基本是Linux交叉编译版本,安装后会触发CPU架构不匹配、库版本冲突的新问题。
内容的提问来源于stack exchange,提问作者Lord Nexprex
相关产品推荐
相关产品推荐

