C ++链接库的标志记录在哪里?

时间:2014-12-04 04:59:35

标签: c++ opengl gcc flags

对于我想要使用的每个新库,我注意到有一个特定的标志或一组标志,我必须添加到编译中才能实际链接库。

例如使用GL GLEW和GLUT,我使用“-lglut -lGLU -lGL”。

问题是找到我需要的这些标志的唯一方法是在Google上无休止地搜索它们。是否有一个“标准”的地方可以找到任何图书馆的这些标志?它们是附加到标题的顶部还是其他东西?我希望这只是一件我不知道的事情。

2 个答案:

答案 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有点过时了。