编译出错 ------ undefined reference to `ceilf'

ceilf是一个在math.h里面的一个数学函数,函数的实现位于 libm.a 库文件中,使用 math.h 中声明的库函数时,gcc命令行必须加-lm选项

这时我们就需要在编译的时候加上-lm参数,即

gcc test.c -o test -lm

如果是用的makefile,就要在相应的文件里面加上-lm参数,编译器中可能存在多个版本libm.a,可以以绝对路径指定库文件

GCC_STDLIB_TARGET_PATH=thumbv7
ofp

STDLIB+=
$(GCC_INSTALL_PATH)arm-none-eabilib$(GCC_STDLIB_TARGET_PATH)libm.a

$(IMAGE_BUILD_DIR)/$(IAMGE).elf: $(TARGET_COMMPILE_DIRS)
@echo --------------link [$@]----------------------
@SETLOCAL ENABLEDELAYEDEXPANSION & 
(for /f "delims=" %%i in ('type $(subst $(strip /),\,$(COMLIED_LIB_LIST_FILE))') do (set ret=!ret!%%i)) & 
(echo $(LD) $(LDFLAGS) $(U_LDFLAGS) -Map $(IMAGE_BUILD_DIR)/$(IAMGE).map -o $@ --whole-archive !ret! $(DEFAULT_LIBS) --no-whole-archive $(U_LIBS) $(STDLIB)) & 
($(LD) $(LDFLAGS) $(U_LDFLAGS) -Map $(IMAGE_BUILD_DIR)/$(IAMGE).map -o $@ --whole-archive !ret! $(DEFAULT_LIBS) --no-whole-archive $(U_LIBS) $(STDLIB)) & 
ENDLOCAL
原文地址:https://www.cnblogs.com/god-of-death/p/14718632.html