pkg-config无法在sysroot目录下找到包

And*_*der 2 pkg-config spidermonkey cross-compiling

任何人都可以告诉我为什么这可能会失败:

afeder@ubuntu:~/android/toolchain/sysroot$ ls $PKG_CONFIG_SYSROOT_DIR/usr/local/lib/pkgconfig/mozjs185.pc
/home/afeder/android/toolchain/sysroot/usr/local/lib/pkgconfig/mozjs185.pc

afeder@ubuntu:~/android/toolchain/sysroot$ pkg-config mozjs185 --cflags
Package mozjs185 was not found in the pkg-config search path.
Perhaps you should add the directory containing `mozjs185.pc'
to the PKG_CONFIG_PATH environment variable
No package 'mozjs185' found
Run Code Online (Sandbox Code Playgroud)

根据pkg-config的手册页,/usr/local/lib/pkgconfig应该是默认搜索路径之一.

And*_*der 13

我在这里找到答案:http://www.flameeyes.eu/autotools-mythbuster/pkgconfig/cross-compiling.html

包装器脚本不仅应该设置PKG_CONFIG_SYSROOT_DIR变量:在交叉编译时,您要忽略系统中安装的软件包,而只依赖于交叉编译环境中安装的软件包.这是通过重置PKG_CONFIG_DIR(列出其他搜索路径)来实现的,同时设置PKG_CONFIG_LIBDIR以覆盖默认的基本搜索路径.


生成的CMake文件将是这样的:

set(CMAKE_SYSROOT "/path/to/sysroot")

set(ENV{PKG_CONFIG_DIR} "")
set(ENV{PKG_CONFIG_LIBDIR} "${CMAKE_SYSROOT}/usr/lib/pkgconfig:${CMAKE_SYSROOT}/usr/share/pkgconfig")
set(ENV{PKG_CONFIG_SYSROOT_DIR} ${CMAKE_SYSROOT})
Run Code Online (Sandbox Code Playgroud)

免责声明:我使用的CMAKE_SYSROOT变量,当你想通过这是有用-sysrootg++.如果您不想这样,您应该以不同的方式命名您的变量.

  • 嗨,你能否展示你发出的命令让这个工作,谢谢 (4认同)