【问题标题】:g++: No such file or directory?g++:没有这样的文件或目录?
【发布时间】:2012-06-05 10:45:14
【问题描述】:

(在 Linux 上,尝试设置 SDL) 我正在使用 makefile,我发现它们很难学习。这是我得到的错误。

g++: error: game.exe: No such file or directory
make: *** [game.exe] Error 1

这是我的生成文件。 (任何关于让它变得更好的建议都会很棒。我只是把我能找到的任何工作都拼凑在一起。)

#Game Make file
TARGET = game.exe
OBJS = App.o\
   App_OnInit.o\
   App_OnEvent.o\
   App_OnLoop.o\
   App_OnRender.o \
   App_OnCleanup.o\

SDL_CFLAGS := $(shell sdl-config --cflags)
SDL_LDFLAGS := $(shell sdl-config --libs)
CFLAGS = -Wall -o
LIBS =
LDFLAGS = 

$(TARGET): $(OBJS)
       g++ $(CFLAGS) $(SDL_CFLAGS) $@  $(LDFLAGS) $(OBJS) $(SDL_LDFLAGS) $(LIBS)
%.o: src/%.cpp
       g++  -c $(SDL_CFLAGS) $< $(SDL_LDFLAGS)

.PHONY: clean
clean:
    rm -f $(TARGET) $(OBJS)

【问题讨论】:

  • 能否展示完整的编译输出

标签: c++ linux makefile g++ sdl


【解决方案1】:

您可以在规则中交换$(CFLAGS)$(SDL_CFLAGS) 以使$(TARGET) 或更好地从CFLAGS 中删除-o 并将其直接放在$@ 之前:

...
CFLAGS = -Wall
...
$(TARGET): $(OBJS)
       g++ $(CFLAGS) $(SDL_CFLAGS) -o $@  $(LDFLAGS) $(OBJS) $(SDL_LDFLAGS) $(LIBS)

-o 选项应紧接在要生成的可执行文件的名称之前。在您原来的Makefile 中,它是$(CFLAGS) 的一部分,后面是SDL 库的C 标志。因此,编译器会尝试链接 game.exe$@),而不是生成具有该名称的可执行文件。

【讨论】:

  • 谢谢,成功了!我已经坚持了一个多小时。
猜你喜欢
  • 1970-01-01
  • 2021-12-13
  • 2017-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-19
  • 1970-01-01
相关资源
最近更新 更多