2012-02-10 218 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變量,當你想通過-sysrootg++這是有用的。如果你不想要這個,你應該以不同的方式命名你的變量。

+3

嗨,你可能會顯示你發出的命令來獲得這個工作,謝謝 – puk 2013-12-02 10:41:11