好的,所以這一個絕對讓我感到頭疼。基本上,我已經建立了一個簡單的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
也是您在命令行上鍵入的命令。 –