我使用mingw32编译一些C ++代码。经过一番尝试和大量搜索之后,我有一个问题:标志顺序似乎非常重要,以为我在互联网上几乎找不到任何能解释这一点的东西。例如:
g ++ main.cpp -L / lib -I / include -lmingw32 -lSDL2 -lSDL2main -Wall -g -o main.exe->编译
g ++ main.cpp -L / lib -I / include -lmingw32 -lSDL2main -lSDL2 -Wall -g -o main.exe->无法编译
g ++ main.cpp -L / lib -I / include -lSDL2 -lSDL2main -lmingw32 -Wall -g -o main.exe->编译
我能理解为什么 -lSDL2main 首先需要 -lSDL2 ,但是为什么 -lmingw32 的位置并不重要?
编辑:
我解释:根据我对编译过程的了解, .cpp首先出现,-l明确表示库(编译的最后一步)。那么,为什么要把 main.cpp 放在最后,为什么还要继续编译过程并以库中的错误结束。如果mingw没有任何源文件,而只是编译lib,那该怎么用?
答案 0 :(得分:0)
这不是fag的顺序,而是库的顺序。最后一个库应该是每个人都需要的库,然后倒数第二个是不需要的库,等等。
为什么不需要libmingw32可能是因为SDL库不需要它。