zl程序教程

您现在的位置是:首页 >  其它

当前栏目

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

to 编译 &# 39 出错 ------ reference undefined
2023-09-11 14:19:53 时间

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

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

gcc test.c -o test -lm

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

GCC_STDLIB_TARGET_PATH=thumb\v7\nofp

STDLIB+=\
$(GCC_INSTALL_PATH)\arm-none-eabi\lib\$(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