编译中的 Geany、g++ 和 SDL 错误
Geany, g++ and SDL errors in compilation
所以,我正在学习 linux 的简单 C++ 和 SDL 教程,但我在途中遇到了一些错误。
首先,我使用的是 Geany,我下载了相应的 SDL2 库,事情是这样的:
在我的项目文件夹中有一个 main.cxx 文件,如前所述,我用 geany 打开它:
我包含了这个库:
#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_mixer.h>
首先我遇到了一个奇怪的错误,编译成功执行但是在构建时我遇到了这个错误:
main.cxx: undefined reference to `SDL_Init'
稍作搜索后,我发现我必须将标签 -lSDL
添加到我的 geany 构建选项中,这样它们最终会变成这样:
编译:
g++ -Wall -c -lSDL "%f"
建造:
g++ -Wall -o -lSDL "%e" "%f"
但是有一个问题,现在当我执行构建命令时,我得到一个:
G ++: error: main: There is no such file or directory
为什么我会收到此错误,是我包含了错误的库还是 g++ 的 .cxx 文件有问题?
我已经尝试在 .cxx 和 .cpp 之间进行转换。
提前致谢。
g++ -Wall -c -lSDL2 "%f"
绝对不需要在编译阶段指定库。删除 -lSDL
.
g++ -Wall -o -lSDL2 "%e" "%f"
它调用编译器,暗示 linking(没有 -c
或其他 operation-specific 标志),并将输出文件名设置为 -lSDL2
。也就是说,linker 将在当前工作目录中名为 -lSDL2
的文件中输出结果二进制文件。然后,当涉及到 link 的文件时,它会变成 main
,它应该是 -o main
,但是由于你已经破坏了标志顺序,它现在只是普通的文件名 linker 将尝试 link 生成二进制文件。正好这个文件不存在
长话短说,制作正确的 linking 行 - g++ -o "%e" %f -lSDL2
(库排在最后,库顺序也很重要)。
所以,我正在学习 linux 的简单 C++ 和 SDL 教程,但我在途中遇到了一些错误。
首先,我使用的是 Geany,我下载了相应的 SDL2 库,事情是这样的:
在我的项目文件夹中有一个 main.cxx 文件,如前所述,我用 geany 打开它:
我包含了这个库:
#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
#include <SDL2/SDL_mixer.h>
首先我遇到了一个奇怪的错误,编译成功执行但是在构建时我遇到了这个错误:
main.cxx: undefined reference to `SDL_Init'
稍作搜索后,我发现我必须将标签 -lSDL
添加到我的 geany 构建选项中,这样它们最终会变成这样:
编译:
g++ -Wall -c -lSDL "%f"
建造:
g++ -Wall -o -lSDL "%e" "%f"
但是有一个问题,现在当我执行构建命令时,我得到一个:
G ++: error: main: There is no such file or directory
为什么我会收到此错误,是我包含了错误的库还是 g++ 的 .cxx 文件有问题? 我已经尝试在 .cxx 和 .cpp 之间进行转换。
提前致谢。
g++ -Wall -c -lSDL2 "%f"
绝对不需要在编译阶段指定库。删除 -lSDL
.
g++ -Wall -o -lSDL2 "%e" "%f"
它调用编译器,暗示 linking(没有 -c
或其他 operation-specific 标志),并将输出文件名设置为 -lSDL2
。也就是说,linker 将在当前工作目录中名为 -lSDL2
的文件中输出结果二进制文件。然后,当涉及到 link 的文件时,它会变成 main
,它应该是 -o main
,但是由于你已经破坏了标志顺序,它现在只是普通的文件名 linker 将尝试 link 生成二进制文件。正好这个文件不存在
长话短说,制作正确的 linking 行 - g++ -o "%e" %f -lSDL2
(库排在最后,库顺序也很重要)。