【发布时间】:2015-10-10 11:11:36
【问题描述】:
我目前正在学习如何使用 makefile 并将我的 main.cpp 划分为多个文件。
这是我目前的结构
├── makefile
└── src
├── Graphics
│ ├── Graphics.cpp
│ └── Graphics.h
└── main.cpp
还有我的makefile
CC = g++
CFLAGS = -c
LFLAGS = -Wall
OUTPUT = game
game : main.o Graphics.o
$(CC) $(LFLAGS) main.o Graphics.o -lSDL2 -lSDL2_image -o $(OUTPUT)
main.o : src/main.cpp
$(CC) $(CFLAGS) src/main.cpp
Graphics.o : src/Graphics/Graphics.cpp
$(CC) $(CFlAGS) src/Graphics/Graphics.cpp -lSDL2
每次我编译。我总是得到这个错误。但我有我的主要声明。它是在我的 Graphics.cpp 中寻找一个 main 吗?
/usr/bin/ld: /usr/lib/debug/usr/lib/x86_64-linux-gnu/crt1.o(.debug_line): relocation 0 has invalid symbol index 2
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
make: *** [Graphics.o] Error 1
这是我的主要功能
#include "Graphics/Graphics.h"
int main(int argc , const char * argv[]){
Graphics graphics;
while(true){
//do things here later
}
return 0;
}
//编辑。
顺便说一句。还有一种方法可以不在 Graphics.cpp 上链接 sdl2,如果删除 -lSDL2。它会给我所有未定义的 sdl2 函数
【问题讨论】:
-
你的主要功能是什么样子的?请在您的问题中添加简化代码。
-
我已经更新了我的问题
-
可能与SDL有关。他们不定义自己的入口点吗?
-
产生错误的命令是什么?
-
我也是这么想的。但第一个版本的单个 main.cpp 有效。