我正在尝试编译glib-2.32.1
,因此我将libffi-3.0.1
安装到以下路径中:
~/localroot/lib/
,头文件位于:
~/localroot/lib/libffi-3.0.11/include/
然而,当我配置时:
~/tmp/build_alot/glib-2.32.1 $ ./configure --prefix=~/localroot
我看到以下错误:
checking whether to cache iconv descriptors... no
checking for ZLIB... yes
checking for LIBFFI... no
configure: error: Package requirements (libffi >= 3.0.0) were not met:
No package 'libffi' found
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.
Alternatively, you may set the environment variables LIBFFI_CFLAGS
and LIBFFI_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
为了成功编译glib,我需要为LIBFFI_LIBS
和LIBFFI_CFLAGS
设置哪些正确的值?
当我编译libffi时,我得到以下有用信息:
已安装的库: /家庭/内厄姆/ localroot / lib中
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "/home/user/localroot/share/info" || /bin/mkdir -p "/home/user/localroot/share/info"
/usr/bin/install -c -m 644 ../doc/libffi.info '/home/nahum/localroot/share/info'
install-info --info-dir='/home/user/localroot/share/info' '/home/user/localroot/share/info/libffi.info'
test -z "/home/user/localroot/lib/pkgconfig" || /bin/mkdir -p "/home/user/localroot/lib/pkgconfig"
/usr/bin/install -c -m 644 libffi.pc '/home/user/localroot/lib/pkgconfig'
make[3]: Leaving directory `/home/user/tmp/build_alot/libffi-3.0.11/x86_64-unknown-linux-gnu'
make[2]: Leaving directory `/home/user/tmp/build_alot/libffi-3.0.11/x86_64-unknown-linux-gnu'
make[1]: Leaving directory `/home/user/tmp/build_alot/libffi-3.0.11/x86_64-unknown-linux-gnu'
将PKG_CONFIG_PATH
设置为/home/user/localroot/lib/pkgconfig
仍然无法取得成功。
答案 0 :(得分:36)
我设法使用:
编译glibexport LIBFFI_CFLAGS=-I/home/user/localroot/lib/libffi-3.0.11/include
export LIBFFI_LIBS="-L/home/user/localroot/lib -lffi"
现在我必须看看未来的依赖关系是否对编译它的方式感到满意。
答案 1 :(得分:4)
对于那些想知道-I
和-L
和-lffi
标志来自哪里的人(Oz123&#39}的答案),我发现他们可以在:
/home/user/local-software/libffi-3.1/lib/pkgconfig/libffi.pc
阅读文件给出:
...
...
Libs: -L${toolexeclibdir} -lffi
Cflags: -I${includedir}
使用Libs
和Cflags
位置分别设置LIBFFI_LIBS
和LIBFFI_CFLAGS
变量。现在,如果你运行./configure
然后make && make install
,那么事情应该有用(至少他们为我做了)。