2012-02-10 2 views
0

Может кто-нибудь пожалуйста, скажите мне, почему это может произойти сбой:PKG-конфигурации не удается найти пакет в каталоге SYSROOT

[email protected]:~/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 

[email protected]:~/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 

По словам мужчины странице PKG-конфигурации, /usr/local/lib/pkgconfig должен быть один из поиска по умолчанию пути.

ответ

7

Я нашел ответ здесь: 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}) 

Отказ от ответственности: Я использовал CMAKE_SYSROOT переменную, которая полезна, когда вы хотите передать -sysroot в g++. Если вы не хотите этого, вы должны назвать свою переменную по-разному.

+3

Привет, вы могли бы показать команду, которую вы дали, чтобы получить эту работу, спасибо – puk

Смежные вопросы