【问题标题】:makefile linking error -lSDL (linux)makefile 链接错误 -lSDL (linux)
【发布时间】: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


【解决方案1】:

你可以试试

CLINK_FLAGS = `sdl-config --libs`

如果你不知道 -L 的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多