我怎样才能知道 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?

嵌入式 GCC 优化魔法

我的基于 IBM MobileFirst Platform 7.1 CLI 的服务器存在一些问题;我怎样才能轻松地重新创建它?

在研究缓冲区溢出时,我应该使用哪些版本的 GCC 或标志?

MSVC++ 警告标志

如何关闭 gcc 编译器优化以启用缓冲区溢出