【问题标题】:Statically Linking glib静态链接 glib
【发布时间】:2013-09-09 04:45:32
【问题描述】:

我正在尝试将 glib 静态链接到我的 C 程序中。我不确定这样做的最佳方法是什么。我下载了代码并将其放在名为 glib-2.36.4 的子目录中。我在使用 gcc 时添加了“-Iglib-2.36.4”。 glib.h 位于 glib-2.36.4/glib 目录中,该文件中引用了 glib 目录下的其他头文件(例如 #include )。

我不确定为什么会这样,因为 glib.h 和这些其他头文件都在同一级别(在 glib 子目录中)。由于找不到galloca.h(即使它在那里),我得到一个编译错误。所以我将 glib.h 复制了一层,这些错误就消失了。然后我收到一个关于缺少 glibconfig.h 的错误。我从我的 usr 目录中复制了它,并且该错误消失了。我编译了我的项目,现在我收到关于未定义引用 g_ptr_array_new 的错误。我想这一定是因为我还没有真正编译过 glib。我曾尝试构建 glib,但是当我输入“./configure”时,我收到了以下消息:

checking if arpa/nameser_compat.h is needed... configure: error: could not compile test program either way

我确实使用 yum 安装了 glib,但我真的希望即使机器上没有安装 glib 也能运行这段代码。

【问题讨论】:

  • 您似乎不知道自己在做什么。 -l 链接器标志用于指定已编译的库(在您的情况下为 .a 文件),并且您似乎没有成功编译该库,这是链接它的先决条件。

标签: c glib


【解决方案1】:

您需要通过 yum 安装 glib 和 glib-dev,使用 ./configure 编译,(查看 ./configure 脚本,看看是否有任何标志需要提供或定义您需要生成静态构建)无需移动任何文件,然后您需要使用 -i path/to/glib/includes 和链接 -L path/to/built/static/library

【讨论】:

  • 我已经安装了这些包,但是当我执行“./configure”时仍然得到我上面提到的错误。我再次下载了代码,但仍然面临同样的问题。我能够使用 -I 和 -L 参数编译和运行我的代码,但我的理解是这需要用户已经安装了 glib。对吗?
  • 不是,如果您使用 .a 库而不是 .so 库进行静态链接。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 2018-05-04
  • 1970-01-01
相关资源
最近更新 更多