c++ - 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
解决方案
推荐阅读
- r - 处理数据框的聚合函数特征
- python - 如何绘制带有分类变量(加边距)的二维图表
- sql-server - 如何从子查询中为主查询带来价值
- powershell - 为什么调用脚本块时我的 Receive-Job 调用会挂起?
- java - Java socket聊天程序(聊天成员突然离开房间没有错误)
- javascript - jQuery - JavaScript 正则表达式只允许数字和减号作为第一个字符
- java - Java 8 Swing 中是否有列表 gui 组件?
- python - 我可以在变量名中添加字符串吗?
- python - python 从 subprocess.PIPE 读取所有可用数据但不阻塞
- ios - 如何以 webview ios xamarin 形式访问摄像头和麦克风?