编译出错 ------ 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=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
                    
                
                
            
        
浙公网安备 33010602011771号