安装Mike高精度数学库(MAPM)报错求助:无法找到-lm和-lc
解决MAPM库链接阶段
-lm/-lc找不到的问题 解决办法
- 安装系统基础库开发包:
Debian/Ubuntu系列执行:
RHEL/CentOS系列执行:sudo apt install libc6-dev libm-devsudo yum install glibc-devel - 调整Makefile链接顺序:
打开项目的Makefile,找到链接命令行,把-lm和-lc移到目标文件列表的后面。比如将:
修改为:ld -lm -lc $(OBJ_FILES) -o $(TARGET)
链接器是按顺序查找符号的,把库放在目标文件之后才能正确解析依赖。ld $(OBJ_FILES) -lm -lc -o $(TARGET) - 若为交叉编译场景:
需确保交叉工具链完整包含C标准库和数学库,可通过指定库路径重新编译:make LDFLAGS="-L/your/cross-toolchain/lib"
-lm和-lc的作用
-lm:用于链接系统数学库(libm.so/libm.a),包含正弦、余弦、平方根等高级数学函数的实现。C语言标准中这类函数不属于默认链接的基础库,必须显式指定该参数才能调用。-lc:用于链接C标准库(libc.so/libc.a),包含printf、malloc、字符串操作等所有基础C语言函数。通常使用gcc编译时会自动添加该参数,但直接调用ld链接时需要手动指定。
内容的提问来源于stack exchange,提问作者Azi muth
相关产品推荐
相关产品推荐

