【发布时间】:2016-05-28 02:33:57
【问题描述】:
我最近尝试制作一个 makefile,它在我的笔记本电脑上运行良好。我正在用 C++ 制作游戏,并在 github 上分享了我的代码。我的一个朋友克隆了
回购并告诉我他遇到了一些错误。遇到错误我必须通知您,我的项目使用基于 SDL 的 QuickCG,因此自然需要安装 SDL。我的朋友最初没有,但后来使用sudo apt-get install libsdl1.2-dev 下载了它。下载后,“标题包含”错误已删除,但我想仍然存在链接错误。
这是我的makefile
CC = g++
CFLAGS = -c -O3
CLINK_FLAGS = -lSDL
all : game
game : main.o quickcg.o
$(CC) main.o quickcg.o -o game $(CLINK_FLAGS)
main.o : main.cpp
$(CC) $(CFLAGS) main.cpp
quickcg.o : quickcg.cpp
$(CC) $(CFLAGS) quickcg.cpp
clean :
rm *.o game
我的游戏文件夹只包含两个 cpp 文件,分别是 main.cpp 和 quickcg.cpp。它还包含 1 个头文件 quickcg.h
现在来看看执行 make 后的确切错误语句
g++ -c -O3 main.cpp
g++ -c -O3 quickcg.cpp
g++ main.o quickcg.o -o game -lSDL
/usr/bin/ld: cannot find -lSDL
collect2: error: ld returned 1 exit status
make: *** [game] Error 1
请注意,这在我的笔记本电脑上运行良好。 另请注意,即使在他的笔记本电脑上,以下命令也很有效
g++ *.cpp -lSDL -O3
很明显,makefile 似乎有问题。 如果我做了任何愚蠢的事情,请原谅我,因为我是 makefile 的新手,但我在这里找不到任何错误。提前致谢
【问题讨论】:
-
你朋友的机器上
g++ *.cpp -lSDL -O3 -v的输出是什么? -
pastebin.com/WdmFF2Fv 这是输出。有什么想法吗?
-
现在在使用makefile时添加选项,你需要看看以
-L开头的最后几行,如果找不到库那么这些路径应该不同。
标签: gcc compilation makefile linker