首页 > 解决方案 > Makefile 在特定系统中失败

问题描述

在我的项目中,我有以下结构:

.
├── Makefile
├── include
│   ├── Game.h
│   ├── Game.h.gch
│   └── Letter.h.gch
├── letra_A_.png
├── main.cpp
├── modules
│   └── Game.cpp
└── resources
    └── space.bmp

3 directories, 8 files

我的 Makefile 包含:

#Makefile for SDL universe

SOURCES := $(shell find . -name \*.cpp -o -name \*.h)
build:
    echo "Building.."
    g++  -L/usr/include -lSDL2 $(SOURCES) -o blocks
    echo "Done"

我看到的问题是它只能在我拥有的两台机器中的一台机器上工作。运行良好的有 Kali Linux,而失败的有 Ubuntu 18.10。

我可以看到 SDL2 在两个发行版中都安装在相同的位置:

(0) matias #> ls -ldh /usr/include/SDL2/
drwxr-xr-x 2 root root 4.0K Oct 28 11:27 /usr/include/SDL2/

为什么我的项目没有在 Ubuntu 中构建?我收到以下错误:

./main.cpp: In function ‘int main()’:
./main.cpp:11:51: warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
     my_game -> init(10,10,800,600,false,"Mi juego");
                                                   ^
/tmp/ccerEhlq.o: In function `Game::init(int, int, int, int, bool, char*)':
Game.cpp:(.text+0x9d): undefined reference to `SDL_Init'
Game.cpp:(.text+0xbd): undefined reference to `SDL_CreateWindow'
Game.cpp:(.text+0xdf): undefined reference to `SDL_GetError'
Game.cpp:(.text+0x117): undefined reference to `SDL_CreateRenderer'
Game.cpp:(.text+0x135): undefined reference to `SDL_RWFromFile'
Game.cpp:(.text+0x142): undefined reference to `SDL_LoadBMP_RW'
Game.cpp:(.text+0x168): undefined reference to `SDL_CreateTextureFromSurface'
Game.cpp:(.text+0x183): undefined reference to `SDL_FreeSurface'
/tmp/ccerEhlq.o: In function `Game::draw()':
Game.cpp:(.text+0x1b8): undefined reference to `SDL_RenderClear'
Game.cpp:(.text+0x1da): undefined reference to `SDL_RenderCopy'
Game.cpp:(.text+0x1ea): undefined reference to `SDL_RenderPresent'
/tmp/ccerEhlq.o: In function `Game::running()':
Game.cpp:(.text+0x215): undefined reference to `SDL_PollEvent'
/tmp/ccerEhlq.o: In function `Game::quit()':
Game.cpp:(.text+0x25e): undefined reference to `SDL_DestroyWindow'
Game.cpp:(.text+0x263): undefined reference to `SDL_Quit'
collect2: error: ld returned 1 exit status

标签: c++makefilebuildsdl-2

解决方案


推荐阅读