链接器找不到库,即使我用 -L 指定了它的位置
The linker can't find a library even when i have specified it's location with -L
这是我的制作文件
# Output
OUTDIR = out/
#Source files
SRC = src/main
#Objects
OBJS = $(addprefix $(OUTDIR), $(addsuffix .o, $(SRC)))
#Dependencies
DEPS = $(addprefix $(OUTDIR), $(addsuffix .d, $(SRC)))
#Compiler
GCC = gcc
#Includes
INCS = -Iinc -ID:/Development/SDL2/Bins/include/SDL2 -ID:/Development/GLFW/include/GLFW
-ID:/Development/GLEW/glew-2.1.0/include/GL
#Compiler flags
CFLAGS = $(INCS) -Wall
#Libraries
LIBS = -lmingw32 -lSDL2main -lSDL2 -LD:/Development/GLFW/lib-mingw/libglfw3.a -lglfw3 -lglew32s -lgdi32 -lopengl32
#Linker flags
LFLAGS = $(LIBS)
all: $(OUTDIR)asd.exe
$(OUTDIR)asd.exe: $(OBJS)
@echo LINKING...$(OBJS) $(LFLAGS)
@gcc -o $@ $(OBJS) $(LFLAGS)
$(OUTDIR)%.o: %.c
@mkdir -p $(subst /,,$(dir $@))
# @echo PREPROCESSING...$<
# @gcc -Iinc -E $< -o $(patsubst %.o,%.i,$@)
# @echo COMPILLING...$(patsubst %.o,%.i,$@)
# @gcc -Iinc -S $(patsubst %.o,%.i,$@) -o $(patsubst %.o,%.s,$@)
# @echo ASSEMBLING...$(patsubst %.o,%.s,$@)
# @as $(patsubst %.o,%.s,$@) -o $@
@echo COMPILLING...$<
@$(GCC) $(CFLAGS) -MM -MT $@ -o $(patsubst %.o, %.d, $@) $<
@$(GCC) $(CFLAGS) -c $< -o $@
#$(OUTDIR)%.d: %.c
# @mkdir -p $(subst /,,$(dir $@))
# @$(GCC) $(CFLAGS) -MM -MT $(patsubst %.d, %.o, $@) -o $@ $<
-include $(DEPS)
clean:
@echo CLEANING...
@rm -rf $(OUTDIR)*
这里
#Libraries
LIBS = -lmingw32 -lSDL2main -lSDL2 -LD:/Development/GLFW/lib-mingw/libglfw3.a -lglfw3 -lglew32s -lgdi32 -lopengl32
我已经用-L
指定了libglfw3.a
的位置,但链接器仍然抱怨并且找不到-lglfw3
。它给出以下错误:
LINKING...out/src/main.o -lmingw32 -lSDL2main -lSDL2 -LD:/Development/GLFW/lib-mingw/libglfw3.a -lglfw3 -lglew32s -lgdi32 -lopengl32
c:/mingw/bin/../lib/gcc/mingw32/6.3.0/../../../../mingw32/bin/ld.exe: cannot find -lglfw3
collect2.exe: error: ld returned 1 exit status
我正在使用 Mingw32,如果我libglfw3.a
放在它的lib
文件夹中,它会找到它(没有-LD:/Development/GLFW/lib-mingw/libglfw3.a
(。
为什么链接器在我用-L
指定库的位置时找不到库?
-L
指定库的搜索目录,因此该选项应-LD:/Development/GLFW/lib-mingw/
。
位置是指它在哪里,而不是它是什么。
您提供了库的完整路径,而不是库所在目录的路径。
-L
用于指定包含库的目录的路径。
要么只提供要-L
的目录(您已经有-lglfw3
(,要么删除-L
并将此路径作为链接的对象传递,就像您对所有.o
文件所做的那样(并删除-lglfw3
(。
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- CMake 在 Windows 上的自定义位置上找不到 Boost
- 快速排序;分段错误,但找不到位置?
- 链接器找不到库,即使我用 -L 指定了它的位置
- 找不到 GLSL 着色器统一位置
- CMake 找不到源文件,即使它位于正确的位置
- 8谜题代码.我的队列没有填充,我找不到错误的位置
- 找不到无限循环发生的位置
- 找不到异常源:cudaError_enum内存位置
- 堆栈溢出,找不到位置
- 错误:控制到达非无效功能的末尾.找不到修复错误的位置
- 路径位置错误:在 PATH 中找不到程序"make"?
- VC6正在记住一个activeX控制器使用的dll位置,我找不到在哪里更改它
- VBA找不到我的DLL,尽管硬编码的位置
- 核心转储,但是找不到错误位置,有GDB的错误信息