我当时正在使用 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
但是,当我编译时,它在尝试构建可执行文件时出现此错误:
collect2: error: ld terminated with signal 11 [Segmentation fault], core dumped
makefile:11: recipe for target 'exe' failed
make: *** [exe] Error 1
它确实构建了一个可执行文件,但我的计算机说它无法运行它。
我尝试在互联网上搜索,发现 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
我遇到了完全相同的错误。
我同时在 Windows 和 Linux 上进行开发,并使用 Filezilla 来传输我的文件。该代码之前使用 Cygwin 在 Windows 上构建,但从我的 Linux 主机下载文件后就无法构建。
该过程是在 Windows 上构建 ==> 上传到 Linux 并构建 ==> 进行一些更改 ==> 下载到 Windows 并构建 ==> 出现错误。
然后我意识到我已经将 Linux 目标文件与源代码一起传输了,所以我删除了所有 .o 文件,构建顺利进行。
我不能说这是否是@Zaerospi 的问题,但这似乎是我错误的根源。
任何其他有相同错误的人可能想尝试删除他们的目标文件并重建。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)