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