c - Makefile“主可执行文件的隐式输入/启动”
问题描述
这是我的项目结构
root
|____Makefile
|
|___src
| |____*.c
|
|___inc
| |___*.h
|
|___obj
问题是当我尝试制作时出现此错误
------->建筑狼1 ...
体系结构 x86_64 的未定义符号:“_main”,引用自:主要可执行文件 ld 的隐式入口/开始:未找到体系结构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用) make: *** [Wolf1] 错误 1
RM = rm -rf
SDL = libsdl2.a
TTF = libsdl2_ttf.a
FT = libft.a
LFT_DIR = libft
LFT = $(LFT_DIR)/$(FT)
LSDL = $(LSDL_DIR)/$(SDL)
LTTF = $(LTTF_DIR)/$(TTF)
NAME = exu100
###########################color code
BLACK := $(shell tput -Txterm setaf 0)
RED := $(shell tput -Txterm setaf 1)
GREEN := $(shell tput -Txterm setaf 2)
YELLOW := $(shell tput -Txterm setaf 3)
LIGHTPURPLE := $(shell tput -Txterm setaf 4)
PURPLE := $(shell tput -Txterm setaf 5)
BLUE := $(shell tput -Txterm setaf 6)
WHITE := $(shell tput -Txterm setaf 7)
RESET = \033[0m
############################Libraries
INCS_DIR := inc
INCS_DIR += $(LFT_DIR)
############################Compilation
SRCS_DIR = srcs
OBJS_DIR = objs
############################FILE
INCS := inc/wolf_3d.h
INCS += libft/libft.h
###########
SRC := main.c
SRC += stock_map.c
SRC += texture.c
SRC += events.c
SRC += wolf_miniMap.c
SRC += init_wolf.c
SRC += game_engine.c
SRC += outils.c
SRC += sdl_init.c
SRC += mini_map.c
######################
LSDL_DIR = $(HOME)/.brew/Cellar/sdl2/2.0.12_1/lib
LTTF_DIR = $(HOME)/.brew/Cellar/sdl2_ttf/2.0.15/lib
INCS_DIR += $(HOME)/.brew/Cellar/sdl2/2.0.12_1/include/SDL2
INCS_DIR += $(HOME)/.brew/Cellar/sdl2_ttf/2.0.15/include/SDL2
########################################3Linked libraries at compile time.
LIBS := -L$(LSDL_DIR) -lSDL2
LIBS += -L$(LTTF_DIR) -lSDL2_ttf
LIBS += -L$(LFT_DIR) -lft
LIBS += -lm
LTTF = $(LTTF_DIR)/$(TTF)
D_SRCS = $(addsuffix /, $(SRCS_DIR))
D_OBJS = $(addsuffix /, $(OBJS_DIR))
C_OBJS = $(addprefix $(D_OBJS), $(OBJS))
C_INCS = $(foreach include, $(INCS_DIR), -I$(include))
# How files should be compiled.
CC = gcc
OBJS = $(SRCS:.c=.o)
# Compilation flags.
CFLAGS = $(C_INCS) -Wall -Wextra -Werror
#----------------->>>>>>>>>>>>>>>>START<<<<<<<<<<<<<-------------------#
$(D_OBJS)%.o: $(D_SRCS)%.c $(INCS)
@echo "$(YELLOW)------->Compiling :$(RESET)" $<
@$(CC) $(CFLAGS) -c $< -o $@
all: $(C_OBJS) $(NAME)
$(NAME): $(LSDL) $(LTTF) $(LFT) $(C_OBJS)
@echo "$(YELLOW)\n------->Building $(RESET)$(NAME) $(YELLOW)...\n$(RESET)"
@$(CC) $(CFLAGS) -o $(NAME) $(C_OBJS) $(LIBS)
@echo "$(GREEN)*** Project $(NAME) successfully compiled ***\n$(RESET)"
print-% : ; @echo $* = $($*)
#### make libft
$(LFT):
@make -sC $(LFT_DIR)
### creating files for object.o
$(OBJS_DIR):
@mkdir -p $(OBJS_DIR)
当我使用 {make print-C_OBJS} 检查时,似乎 .o 文件不存在
解决方案
在生成文件中
############################Compilation
SRCS_DIR = srcs
OBJS_DIR = objs
但是这些文件夹在您的根文件夹中不存在。
重命名文件夹或相应地修改生成文件。
推荐阅读
- windows-server-2012 - Windows 2012 位传输
- nsis - 如何在使用 NSIS 从许可协议安装程序屏幕中单击“打印”时显示打印对话框以选择打印选项
- django - 有没有什么想法可以在 django 表单处理中将结束标记(/>)放在 html 的文本输入标记中?
- dart - 如何在 Flutter 中使用 Bloc 正确设置 DropdownButton 的值?
- swift - SpriteKit Particle Emitter - 粒子在创建后是否会受到力的影响
- python - 满足条件时列表中的值总和
- java - 我无法在 Android 8 Oreo(华为)中选择 PDF 文件
- hyperledger-fabric - Hyperledger Fabric - Orderer 日志在广播期间显示错误,即使交易成功并提交给所有对等方
- c++ - Vulkan 中的 YCbCr 采样器
- javascript - angular 6中带有http调用的custome管道不返回值