Linux 包括标题';s函数未定义

Linux 包括标题';s函数未定义,linux,makefile,undefined,Linux,Makefile,Undefined,我目前正在尝试第一次使用linux编译一些代码。在阅读了一些关于makefile的基本信息之后,我遇到了一个我无法解决的问题 使用Tiva Makefile模板: # Tiva Makefile # ##################################### # # Part of the uCtools project # uctools.github.com # ####################################### # user configurat

我目前正在尝试第一次使用linux编译一些代码。在阅读了一些关于makefile的基本信息之后,我遇到了一个我无法解决的问题

使用Tiva Makefile模板:

# Tiva Makefile
# #####################################
#
# Part of the uCtools project
# uctools.github.com
#
#######################################
# user configuration:
#######################################
# TARGET: name of the output file
TARGET = main
# MCU: part number to build for
MCU = TM4C123GH6PM
# SOURCES: list of input source sources
SOURCES = main.c startup_gcc.c
# INCLUDES: list of includes, by default, use Includes directory
INCLUDES = $(HOME)/embedded/zekeTiva/Include
# OUTDIR: directory to use for output
OUTDIR = build
# TIVAWARE_PATH: path to tivaware folder
TIVAWARE_PATH = $(HOME)/embedded/tivaware

# LD_SCRIPT: linker script
LD_SCRIPT = $(MCU).ld

# define flags
CFLAGS = -g -mthumb -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=softfp
CFLAGS +=-Os -ffunction-sections -fdata-sections -MD -std=c99 -Wall
CFLAGS += -pedantic -DPART_$(MCU) -c -I$(TIVAWARE_PATH) -I$(INCLUDES)
CFLAGS += -DTARGET_IS_BLIZZARD_RA1
LDFLAGS = -T $(LD_SCRIPT) --entry ResetISR --gc-sections

#######################################
# end of user configuration
#######################################
#
#######################################
# binaries
#######################################
CC = arm-none-eabi-gcc
LD = arm-none-eabi-ld
OBJCOPY = arm-none-eabi-objcopy
RM      = rm -f
MKDIR   = mkdir -p
#######################################

# list of object files, placed in the build directory regardless of source path
OBJECTS = $(addprefix $(OUTDIR)/,$(notdir $(SOURCES:.c=.o)))

# default: build bin
all: $(OUTDIR)/$(TARGET).bin

$(OUTDIR)/%.o: src/%.c | $(OUTDIR)
    $(CC) -o $@ $^ $(CFLAGS)

$(OUTDIR)/a.out: $(OBJECTS)
    $(LD) -o $@ $^ $(LDFLAGS)

$(OUTDIR)/main.bin: $(OUTDIR)/a.out
    $(OBJCOPY) -O binary $< $@

# create the output directory
$(OUTDIR):
    $(MKDIR) $(OUTDIR)

clean:
    -$(RM) $(OUTDIR)/*

.PHONY: all clean
#Tiva Makefile
# #####################################
#
#uCtools项目的一部分
#uctools.github.com
#
#######################################
#用户配置:
#######################################
#目标:输出文件的名称
目标=主要
#MCU:要为其生成的零件号
MCU=TM4C123GH6PM
#来源:输入来源列表
SOURCES=main.c启动\u gcc.c
#包含:包含列表,默认情况下,使用包含目录
INCLUDES=$(主页)/嵌入式/zekeTiva/INCLUDES
#OUTDIR:用于输出的目录
OUTDIR=build
#TIVAWARE_路径:指向TIVAWARE文件夹的路径
TIVAWARE_路径=$(主)/embedded/TIVAWARE
#LD_脚本:链接器脚本
LD_脚本=$(MCU).LD
#定义标志
CFLAGS=-g-mthumb-mcpu=cortex-m4-mfpu=fpv4-sp-d16-mfloat abi=softfp
CFLAGS+=-Os-F功能段-fdata段-MD-std=c99-墙
CFLAGS+=-pedantic-DPART_$(MCU)-c-I$(TIVAWARE_U路径)-I$(包括)
CFLAGS+=-d目标是暴雪
LDFLAGS=-T$(LD_脚本)——条目重置ISR——gc部分
#######################################
#用户端配置
#######################################
#
#######################################
#二进制文件
#######################################
CC=arm none eabi gcc
LD=臂无eabi LD
OBJCOPY=arm none eabi OBJCOPY
RM=RM-f
MKDIR=MKDIR-p
#######################################
#对象文件列表,放置在生成目录中,与源路径无关
对象=$(addprefix$(OUTDIR)/,$(notdir$(源代码:.c=.o)))
#默认值:生成bin
全部:$(OUTDIR)/$(TARGET).bin
$(OUTDIR)/%.o:src/%.c |$(OUTDIR)
$(CC)-o$@$^$(CFLAGS)
$(OUTDIR)/a.out:$(对象)
$(LD)-o$@$^$(LDFLAGS)
$(OUTDIR)/main.bin:$(OUTDIR)/a.out
$(OBJCOPY)-O二进制$<$@
#创建输出目录
$(OUTDIR):
$(MKDIR)$(OUTDIR)
清洁:
-$(RM)$(OUTDIR)/*
.骗子:都是干净的

使用这个makefile,我能够从TIVAWARE路径中的任何.h文件编译和使用函数。然而,即使我可以从include路径中包含头,我从包含的头中的函数也是“未定义的”。由于这不是项目的重点,我决定使用Tiva模板,但这确实超出了我的深度。

显示未定义的引用意味着存在一些链接错误。
添加包含TIVAWARE_PATH函数定义的库,并在LDFLAGS中包含PATH,然后重新编译。

我们无法向您提供建议,因为您甚至没有包含收到的错误消息。请剪切并粘贴编译器命令行和您得到的实际错误:说我的函数未定义几乎不足以提供任何帮助。