C++ gcc/g++使用linkerflag“-lSDL2”

C++ gcc/g++使用linkerflag“-lSDL2”,c++,c,gcc,g++,sdl-2,C++,C,Gcc,G++,Sdl 2,根据lazyfoos sdl教程 我设置了sdl2。它使用给定的Terminal命令运行 g++01_hello_SDL.cpp-w-lSDL2-o 01_hello_SDL 我不记得-lsdl2标志了,我也不知道为什么我要用它。 我也无法理解为什么gcc已经知道像-lsdl2这样的SDL realatet选项 人们怎么知道他们必须使用这面旗帜?我在这方面找不到任何有用的东西,人们似乎只是把它当作一个事实,教程没有告诉我为什么要这样做 希望有人有时间来做这件事,如果下次我能自己学习建立其他库的知

根据lazyfoos sdl教程 我设置了sdl2。它使用给定的Terminal命令运行 g++01_hello_SDL.cpp-w-lSDL2-o 01_hello_SDL

我不记得-lsdl2标志了,我也不知道为什么我要用它。 我也无法理解为什么gcc已经知道像-lsdl2这样的SDL realatet选项

人们怎么知道他们必须使用这面旗帜?我在这方面找不到任何有用的东西,人们似乎只是把它当作一个事实,教程没有告诉我为什么要这样做


希望有人有时间来做这件事,如果下次我能自己学习建立其他库的知识,我会很高兴的

专业人士不需要记住编译器和链接器标志。他们使用跨平台pkgconfig

pkg-config --cflags --libs sdl2
例如,它可以在shell中使用

g++ 01_hello_SDL.cpp -w -o 01_hello_SDL `pkg-config --cflags --libs sdl2`

-lSDL2表示名为libSDL2.a的链接静态库。所以,不,GCC不知道SDL是什么。@HolyBlackCat是迂腐的,它不一定意味着静态的,大多数系统上的默认值是动态的,如果没有找到动态库,则返回到静态。感谢respone,我只想了解一下基本知识,我如何知道在我的配置文件中添加哪个linkerflag?我找不到关于这件事的任何官方信息