【发布时间】:2012-01-23 21:52:00
【问题描述】:
在我的正常开发环境 (ubuntu) 中,我在链接 GLib-2.0 时没有任何问题,但是当我尝试在全新安装的 Debian Squeeze 上进行构建时,我在链接 GLib 时遇到了错误。
配置.ac:
...
AC_PROG_CC
AM_PROG_CC_C_O
CFLAGS="$CFLAGS -Wall -W -Wno-unused-parameter -std=c99 -pedantic"
PKG_CHECK_MODULES(MYAPP, [glib-2.0 >= 2.3.0 gthread-2.0])
LIBS="$LIBS $MYAPP_LIBS"
AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT
Autotools 似乎将正确的选项传递给 gcc:
-I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lgthread-2.0 -lglib-2.0
但是,运行 make 我得到一个编译错误:undefined reference to 'g_list_free_full'
验证库是否实际安装:
$ dpkg --get-selections | grep glib
libglib2.0-0 install
libglib2.0-data install
libglib2.0-dev install
有什么想法吗?
【问题讨论】:
-
您应该向我们展示您的
Makefile.am(如果使用 automake)或Makefile.in(如果不是)。同时显示src/Makefile.am或src/Makefile.in。 -
完整来源可以在这里找到:github.com/benlemasurier/stormfs 为了简洁起见,我从帖子中删除了一些数据
-
您不得在 configure.ac 中分配 CFLAGS。 CFLAGS 是一个用户变量,运行配置脚本的用户不应覆盖其对 CFLAGS 的分配。见gnu.org/software/automake/manual/html_node/User-Variables.html
-
curl/types.h 在2ef7a28a71 被删除。最好不要使用它。否则,Debian Squeeze 后将无法编译。
-
只是古玩,谁在使用
g_list_free_full?