【发布时间】:2013-11-14 13:00:44
【问题描述】:
我有一个基于 wxwidgets 的应用程序,使用 boost 和 pcre 库。 在 makefile 中,我通常必须使用 CXXFLAGS 变量等来放置编译器和链接器路径。
这是我写的:
CXXFLAGS := -I. -I/path/boost/prod -I/path/pcre/include $(shell path/wxWidgets/bin/wx-config --unicode=yes --static=yes --cxxflags) -DPCRE_STATIC -O3
CPPFLAGS := -I. -I/path/boost/prod -I/path/pcre/include $(shell path/wxWidgets/bin/wx-config --unicode=yes --static=yes --cppflags) -DPCRE_STATIC -O3
LDFLAGS := -L. -L/path/pcre/lib -L/path/wxWidgets/lib $(shell $path/wxWidgets/bin/wx-config --unicode=yes --static=yes --optional-libs html,aui,stc,xml,adv,core,base) -lpcre -O3
EXEC_POST
根据我现在的情况,wx-config 告诉我我需要哪些库。
当我尝试链接我的编译文件时,链接器会因为找不到例如错误而出现错误。库“gio-2.0”,它是 wx-config 声明的库之一。我现在可以手动安装所有未找到的库并且它可以工作,但通常所有这些需要的库都应该是 wxwidgets 的一部分......我想我搞砸了上面编写的 makefile 配置中的部分。你怎么看?
【问题讨论】:
-
-I和-L采用单个路径参数,而不是多个路径参数。在每个手动路径之前都需要-I/-L。 -
我使用它们,我只是在上面写了路径,而不是用 -I -L 写了整个路径。将在上面进行编辑以使其更清晰。
-
wxWidgets/lib 目录下是否有 gio-2.0 库?仅仅因为 wxWidgets 依赖它并不意味着它包含它。
-
你确定 wx-config 声明了不属于它的库吗?如果是,我如何在 makefile 中声明以在二进制文件中静态包含手动安装的 lib?
-
我敢肯定,如果 wxWidgets 需要 glib 的 gio 库,它可能不会将该库作为其源代码的一部分,而是依赖于系统来提供该库。如果是这种情况,那么您需要安装它以在构建时链接。在这种情况下,您只需要安装它以静态链接到它,就像您要静态链接的任何其他库一样。我假设你的回答表明 wxWidgets/lib 路径下没有 gio 库?