对于我想要使用的每个新库,我注意到有一个特定的标志或一组标志,我必须添加到编译中才能实际链接库。
例如使用GL GLEW和GLUT,我使用“-lglut -lGLU -lGL
”。
问题是找到我需要的这些标志的唯一方法是在Google上无休止地搜索它们。是否有一个“标准”的地方可以找到任何图书馆的这些标志?它们是附加到标题的顶部还是其他东西?我希望这只是一件我不知道的事情。
答案 0 :(得分:3)
我假设您在询问GCC / G ++编译器。
标志为-l<libName>
,其中<libName>
是您要链接的库的名称。例如,-lGL
链接到GL库。
某些库按特定顺序需要多个标志的原因很简单,就是它们相互依赖的方式(库所依赖的库也可能依赖于其他库,依此类推)。在大多数情况下,图书馆的文档应该可以解决问题。
答案 1 :(得分:2)
通常,您会发展直觉,以便在您开发的平台上发现这些内容。它很糟糕。
例如,在我的Debian开发系统上,我首先检查pkg-config
我想要的库。
pkg-config --list-all | less -i
看起来有一个名为gl
的包。因此,您可以使用pkg-config
:
pkg-config --libs gl
pkg-config --cflags gl
然后你可以把它放到你的Makefile中:
gl_cflags := $(shell pkg-config --cflags gl)
gl_libs := $(shell pkg-config --libs gl)
override CFLAGS += $(gl_cflags)
override LIBS += $(gl_libs)
my_app: my_app.o
$(CC) $(LDFLAGS) -o $@ $^ (LIBS)
这不适用于所有库,只有那些安装了.pc
个文件的库。例如,它不会为LibJPEG工作。在这些情况下,您要么记住标志(-ljpeg
),要么使用Autoconf / CMake /等配置脚本在配置时发现标志。
而且,如果您没有安装库的开发版本,那么这一切都不会起作用。
sudo apt-get install libgl1-mesa-dev
P.S。 GLU有点过时了。