Хорошо, так что это абсолютно дует мне в голову. В принципе, у меня есть простой make-файл, который запускает g ++ для создания моего проекта C++ с голубыми костями с SDL2. Теперь, когда я запускаю этот make-файл, он дает мне кучу ошибок для «неопределенного почтения к« SDL_Init »и каждой функции, взятой из SDL2, которую я использую в программе. Однако, когда я копирую команду из make-файла и запускаю ее с терминала, все становится персиковым. Не меняя файл и снова запуская файл make, он просто компилируется.Makefile для приложения SDL запускается только в том случае, если проект был построен раньше времени
Я бегу Elementary OS Локи, г ++ версии 5.4.0 20160609, сделать версию 4.1, libsdl2-DEV версии 2.0.4 + dfsg1-2ubuntu2
Вот файл делают, что я использую:
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
{
}
}
Я полосатые из некоторые из лишних вещей, которые у меня были там, но это суть этого. Как я уже сказал, единственное, что вызывает ошибки, - это make-файл, когда он запущен, без того, чтобы указанный выше файл был скомпилирован вне make-файла с одинаковой командой.
EDIT: Экстра Информация
Ошибки при выполнении 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
Я также попытался запустить что точное команды из файла makefile, и он сбой с точно такими же ошибками
Не могли бы вы по крайней мере, добавить * полный * выход из вашей компиляции? Должно быть слишком долго, так как есть только один вызов функции SDL. Без этого это больше похоже на догадки. – keltar
Также введите команду в командной строке. –