好的,所以这一个绝对让我感到头疼。基本上,我已经建立了一个简单的makefile,它运行g ++来用SDL2构建我的基本C++项目。现在,当我运行这个makefile时,它给了我一大堆“SDL_Init的未定义尊敬”的错误,以及我在程序中使用的从SDL2取得的每一个函数。但是,当我从makefile复制命令并从终端运行它时,一切都很好。在不更改文件并再次运行make文件的情况下,它编译得很好。用于SDL应用程序的Makefile仅在提前构建项目时运行
我运行基本OS洛基,G ++版本5.4.0 20160609,让4.1版,libsdl2-dev的版本2.0.4 + dfsg1-2ubuntu2
这里是我使用的make文件:
的Makefile
CC = g++
CFLAGS = -g -Wall
LFLAGS = -lSDL2
ONAME = patchworkrpg
all: $(ONAME)
$(CC) $(ONAME).cpp $(LFLAGS) -o $(ONAME)
patchworkrpg.cpp
#include <stdio.h>
using namespace std;
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
int main(int argc, char* args[]) {
SDL_Window* window = NULL;
SDL_Surface* surface = NULL;
if(SDL_Init(SDL_INIT_VIDEO) < 0) {
cout << "SDL Failed to init\n";
}
else
{
}
}
我出条纹一些额外的东西,我在那里,但这是它的要点。就像我说的那样,唯一引发错误的是运行时的makefile文件,没有使用相同的命令编译上述文件。运行生成文件时额外的信息
错误:
编辑
g++ patchworkrpg.cpp -o patchworkrpg
/tmp/cctyEbxS.o: In function `main':
patchworkrpg.cpp:(.text+0x25): undefined reference to `SDL_Init'
patchworkrpg.cpp:(.text+0x62): undefined reference to `SDL_CreateWindow'
patchworkrpg.cpp:(.text+0x8a): undefined reference to `SDL_GetWindowSurface'
patchworkrpg.cpp:(.text+0x98): undefined reference to `SDL_Delay'
collect2: error: ld returned 1 exit status
<builtin>: recipe for target 'patchworkrpg' failed
make: *** [patchworkrpg] Error 1
命令输入到这只是正常的终端:运行准确
g++ patchworkrpg.cpp -lSDL2 -o patchworkrpg
我也试过命令从生成文件,它的失败,具有完全相同的错误
你能至少添加编译*全*输出?由于只有一个SDL函数调用,因此不应该太长。没有它,这更像是一种猜测。 – keltar
也是您在命令行上键入的命令。 –