我怎样才能知道 GCC 可以使用哪些标志来更轻松地链接库?
Posted
技术标签:
【中文标题】我怎样才能知道 GCC 可以使用哪些标志来更轻松地链接库?【英文标题】:How can I know which flags are available for GCC to link library more easily? 【发布时间】:2012-02-18 05:01:25 【问题描述】:在阅读有关某些库的文档时,我看到某些库具有某些功能,例如使用这些库更容易编译程序,只需在 GCC 参数中键入“-something
”,而不是键入库的路径或使用 pkg (... -- cflag --clibs
)。
如何获取当前安装在我系统上的库或软件包的“-something
”列表?
例如,OpenGL 标志:
-lGLUT -lGL
当我使用包管理器安装新库时,它们肯定存储在 GCC 的配置文件中,或者 GCC 怎么知道如何使用它们?
【问题讨论】:
【参考方案1】:这些库不存储在任何配置文件中。
如果您检查GCC link options,您将看到一个选项“-l”,用于选择要链接的库。该选项的作用是在指定路径中查找库。
如果您查看文件夹/usr/lib
,您会看到很多名为/usr/lib/libgtkspell.so.0.0.0
的文件。这适用于名为 gtkspell 的库。使用-lgtkspell
链接,链接器会在搜索文件时自动添加其他部分。
pkg-config
应用程序适用于在编译 (--cflags
) 或链接 (--libs
) 时需要特殊额外 GCC 标志的库。但是pkg-config
添加到编译/链接的实际标志只是标准的 GCC 标志。
【讨论】:
【参考方案2】:我想知道那些标志,因为我不知道给 pkg 什么论据。 但我发现它是如何工作的:
在 /usr/lib/pkgconfig 中有我们需要的一切。仅将其中一个文件放入参数中,+ --cflag 和 --clib。
(我不知道我应该查看 /usr/lib/pkgconfig)
【讨论】:
以上是关于我怎样才能知道 GCC 可以使用哪些标志来更轻松地链接库?的主要内容,如果未能解决你的问题,请参考以下文章
MFC:我们怎样才能轻松地从 CTreeCtrl 切换到 CTreeView?
我的基于 IBM MobileFirst Platform 7.1 CLI 的服务器存在一些问题;我怎样才能轻松地重新创建它?