collect2:错误:ld以信号11终止[分段故障],核心转储

Zna*_*api 7 gcc cygwin ld segmentation-fault

我正在使用GLFW学习OpenGL,并且当时对makefile没有很好的理解.我有OpenGL工作,但我决定更多地学习makefile.经过很多网站,时间和反复试验,我想出了这个:

EXENAME = "OpenGL Demo"
CC = gcc
SRCS = ../src/OpenGLDemo.c
OBJS = $(SRCS: .c = .o)
CFLAGS = -Wall -g -c
LIBS = -L./libs -lglfw3 C:/Windows/SysWOW64/opengl32.dll C:/Windows/SysWOW64/glu32.dll

all: opengldemo exe

exe: $(OBJS)
    $(CC) $(OBJS) -o $(EXENAME) $(LIBS)

opengldemo: ../src/OpenGLDemo.c
    $(CC) $(CFLAGS) ../src/OpenGLDemo.c

clean:
    rm -f $(EXENAME)

rebuild: clean all
Run Code Online (Sandbox Code Playgroud)

但是,当我编译时,它在尝试构建可执行文件时会出现此错误:

collect2: error: ld terminated with signal 11 [Segmentation fault], core dumped
makefile:11: recipe for target 'exe' failed
make: *** [exe] Error 1
Run Code Online (Sandbox Code Playgroud)

它确实构建了一个可执行文件,但我的计算机说它无法运行它.我尝试搜索互联网,发现包含此错误的gcc错误报告.我正在做一些愚蠢的事情来解决这个错误.如何修复此错误,这是什么意思?

编辑:完整输出:

make
gcc -Wall -g -c ../src/OpenGLDemo.c
gcc ../src/OpenGLDemo.c -o "OpenGL Demo" -L./libs -lglfw3
C:/Windows/SysWOW64/opengl32.dll C:/Windows/SysWOW64/glu32.dll
cygwin warning:
  MS-DOS style path detected: C:/Windows/SysWOW64/opengl32.dll
  Preferred POSIX equivalent is: /cygdrive/c/Windows/SysWOW64/opengl32.dll
  CYGWIN environment variable option "nodosfilewarning" turns off this warning.
  Consult the user's guide for more details about POSIX paths:
    http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
collect2: error: ld terminated with signal 11 [Segmentation fault], core dumped
makefile:11: recipe for target 'exe' failed
make: *** [exe] Error 1
Run Code Online (Sandbox Code Playgroud)

小智 7

我遇到了完全相同的错误.

我正在开发Windows和Linux,同时使用Filezilla传输我的文件.以前在Windows上使用Cygwin构建的代码,但在从我的Linux主机下载文件后不会.

该过程建立在Windows ==>上传到Linux并构建==>进行一些更改==>下载到Windows并构建==>获取错误.

然后我突然意识到我已经使用源传输了Linux目标文件,所以我删除了所有.o文件,构建顺利.

我不能说这是否是@ Zaerospi的问题,但它似乎是我错误的根源.

具有相同错误的任何其他人可能想要尝试擦除其目标文件并重建.


jot*_*tik 4

这意味着该ld工具或其依赖项之一存在错误,该错误会导致无效的内存访问(分段错误),操作系统会使用 SIGSEGV(信号 11)终止该进程。无论您的构建设置如何,它都不应该崩溃。

ld您可能应该向您的 Linux 发行版供应商或直接向该工具的供应商ld(通常是 GNU,如果您的ld工具来自GNU binutils )提交错误报告。