【发布时间】:2015-02-16 13:00:55
【问题描述】:
我正在学习 C++,为此,我正在编写一个示例 wxWidgets 应用程序。
但是,我在 wxWidgets 网站上找不到的任何文档都告诉我要传递给链接器的库名称。
现在,除了 wxWidgets 之外,对于任何库,是否有一般经验法则或其他约定我应该/会知道,我要链接的对象文件的名称是什么?
【问题讨论】:
我正在学习 C++,为此,我正在编写一个示例 wxWidgets 应用程序。
但是,我在 wxWidgets 网站上找不到的任何文档都告诉我要传递给链接器的库名称。
现在,除了 wxWidgets 之外,对于任何库,是否有一般经验法则或其他约定我应该/会知道,我要链接的对象文件的名称是什么?
【问题讨论】:
我们有更多的“无名指规则”,而不是拇指
通常,如果您手动编译库,它将生成几个库文件(通常是 .a .lib 或类似的东西,完全取决于您的编译器和您的 ./configure)这些是(通常)因为makefile 的构建脚本。
现在可以按照开发人员喜欢的任何方式编辑生成文件,但是有一些很好的约定(实际上是a standard),并且有一些工具可以自动生成库的生成文件(见automake)
Makefile通常是一致的
您可以简单地使用 makefile 来生成文件,如果它符合要求,这些文件将被放置在一个特定的文件夹中(我相信是 lib 文件夹?),所有这些都已排队等待使用!
请记住,库文件只是以预编译格式实现您的代码,您可以使用ar 工具轻松地从您的代码中自己创建一个库。因为它是代码,就像任何其他代码一样,您不一定要包含给定库的所有 库文件。例如,如果您不使用富文本,则使用 wxWidgets,您当然不想通过包含该库文件来浪费最终可执行文件中的额外空间。以后想用的话,可以添加到你的项目中(就像添加.cpp文件一样)
哦,还有 wxWidgets,在他们的(很棒的)documentation、each module 中会说明您需要包含什么标头,以及它是哪个库的一部分。
幸福
图书馆是令人惊叹的、神奇的、幸福的独角兽。尽量不要对它们感到太沮丧,它们会在你的余下编程生涯中在你的想象领域腾飞!
【讨论】:
在谷歌搜索之后,我在 wxWidgets wiki 上找到了一个与 Code::Blocks IDE 相关的页面,但它也适用于我。通过将以下内容添加到链接器选项,它会选择所有必要的文件进行链接:
`wx-config --libs`
(所以这并不能解决我的“一般规则”问题;对于我正在使用的任何库,我仍然需要找出要链接的文件,但至少这解决了 wxWidgets 的问题)。
【讨论】:
每个平台的构建说明都不同,因此您需要参考特定于平台的文件,例如docs/gtk/install.txt(其中提到了wx-config)或docs/msw/install.txt 才能找到它们。
FWIW wxWidgets 项目也将非常感激地接受主要手册的任何补丁,以改进文档的组织。
【讨论】: