【发布时间】:2014-10-11 20:13:25
【问题描述】:
我正在使用 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
【问题讨论】:
-
你能展示更多你的输出吗?
-
@CarlNorum 这几乎就是输出。我会添加其余的,因为你问了。
-
make至少应该输出它正在运行的命令。 -
您是否尝试修复它警告您的路径名?
-
如果工具链的任何部分(编译器、链接器、make 等)崩溃,这不是程序员的错。无论你做了什么愚蠢的事情,工具都不应该崩溃。
标签: gcc segmentation-fault cygwin ld