我不会油嘴滑舌的。
在kubuntu安装中,我在没有任何选项的情况下运行/配置。
但运行make时,我得到以下错误:

make[4]: Entering directory `/home/software/glib/glib-2.40.0/gobject'
  CCLD     libgobject-2.0.la
../libtool: line 6003: cd: (libdir): No such file or directory
libtool: link: cannot determine absolute directory name of `(libdir)'

据我所知,所有的依赖都满足了。我试图将libdir或libdir设置为配置选项:
libdir=/usr/local/lib/ && ./configure
我一直在网上搜索,试图编译一个旧版本的glib,但我仍然完全迷失了。
[编辑]
以下搜索结果似乎是相关的:
https://bbs.archlinux.org/viewtopic.php?id=182353
嗨,我交叉编译glib时也遇到同样的问题。那么,我
最后通过设置libffi-libs和libffi-cflags解决了这个问题。
我的问题是因为我只是简单地构建libffi,但它需要修复
在正确的位置(/usr/include)安装头并修改
/usr/lib/pkgconfig/libffi.pc。
我自己也编译了libffi,没有任何特定的配置选项。

https://lists.gnu.org/archive/html/guile-devel/2014-04/msg00056.html
系统上“pkg config--libs libffi”的输出是什么?
-L\$(libdir)-LFFI
->对了!好问题:-)
对我来说,是:
~/download/software/glib/glib-2.40.0 $ grep  -H '^LIBFFI' */Makefile
build/Makefile:LIBFFI_CFLAGS = -I/usr/local/lib/libffi-3.1/include
build/Makefile:LIBFFI_LIBS = -L\$\(libdir\) -lffi
docs/Makefile:LIBFFI_CFLAGS = -I/usr/local/lib/libffi-3.1/include
docs/Makefile:LIBFFI_LIBS = -L\$\(libdir\) -lffi
gio/Makefile:LIBFFI_CFLAGS = -I/usr/local/lib/libffi-3.1/include
gio/Makefile:LIBFFI_LIBS = -L\$\(libdir\) -lffi
glib/Makefile:LIBFFI_CFLAGS = -I/usr/local/lib/libffi-3.1/include
glib/Makefile:LIBFFI_LIBS = -L\$\(libdir\) -lffi
gmodule/Makefile:LIBFFI_CFLAGS = -I/usr/local/lib/libffi-3.1/include
gmodule/Makefile:LIBFFI_LIBS = -L\$\(libdir\) -lffi
gobject/Makefile:LIBFFI_CFLAGS = -I/usr/local/lib/libffi-3.1/include
gobject/Makefile:LIBFFI_LIBS = -L\$\(libdir\) -lffi
gthread/Makefile:LIBFFI_CFLAGS = -I/usr/local/lib/libffi-3.1/include
gthread/Makefile:LIBFFI_LIBS = -L\$\(libdir\) -lffi
m4macros/Makefile:LIBFFI_CFLAGS = -I/usr/local/lib/libffi-3.1/include
m4macros/Makefile:LIBFFI_LIBS = -L\$\(libdir\) -lffi
tests/Makefile:LIBFFI_CFLAGS = -I/usr/local/lib/libffi-3.1/include
tests/Makefile:LIBFFI_LIBS = -L\$\(libdir\) -lffi

在阅读了上面的内容之后,我尝试了以下操作,但结果是相同的(上面grep命令的输出是相同的):
  LIBFFI_LIBS=/usr/local/lib/ && ./configure

让我知道哪些变量、设置或信息可以使调试这个问题更容易。
[编辑2]
我找到了这个文件:
/usr/local/lib/pkgconfig/libffi.pc文件
内容如下:
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
toolexeclibdir=$(libdir)
includedir=${libdir}/libffi-3.1/include

Name: libffi
Description: Library supporting Foreign Function Interfaces
Version: 3.1
Libs: -L${toolexeclibdir} -lffi
Cflags: -I${includedir}

我不知道用什么来代替什么值,但我会尝试…

最佳答案

我设法编译了glib。
问题确实出在文件/usr/local/lib/pkgconfig/libffi.pc中,我在对问题的第二次编辑中引用了该文件。
台词:

toolexeclibdir=$(libdir)

应该改成
toolexeclibdir=${libdir}

以符合pkg config语法。
这样做之后,我终于可以毫无问题地说些好话了。
有两个更简单的后续问题,您可以张贴为我的答案,让我接受:
1)libffi.pc中的错误语法是libffi本身的错误吗?谁负责创建.pc文件?[编辑:看libffi的源代码,他们似乎对最初的bug负责。我要去报案,这样就可以修好了。谢谢。】
2)我能从这个错误中学到什么?我浪费了很多时间调试和寻找解决方案。什么技巧或诀窍能帮我找到答案?

关于linux - 制作glib:../libtool:第6003行:cd:(libdir):没有这样的文件或目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25588520/

10-11 11:41