Standart olmayan bir önekte yazılım yüklediyseniz PKG_CONFIG_PATH ortam değişkenini ayarlamayı düşünün. Ne anlama geliyor ?
Standart olmayan bir önekte yazılım yüklediyseniz PKG_CONFIG_PATH ortam değişkenini ayarlamayı düşünün. Ne anlama geliyor ?
Yanıtlar:
PKG_CONFIG_PATH
pkg-config
.pc dosyalarını arayacak ek yolları belirten bir ortam değişkenidir .
Bu değişken, pkg-config'nin varsayılan arama yolunu artırmak için kullanılır. Tipik bir Unix sisteminde, dizinlerde /usr/lib/pkgconfig
ve /usr/share/pkgconfig
. Bu genellikle sisteme takılan modülleri kapsayacaktır. Ancak, bazı yerel modüller gibi farklı bir ön eke takılabilir /usr/local
. Bu durumda, pkg-config'in .pc dosyalarını bulabilmesi için arama yolunu hazırlamak gerekir.
pkg-config
Program sistemde yüklü kütüphaneler hakkında bilgi almak için kullanılır. Birincil kullanımı, pkg-config
bir programı bir kütüphaneye derlemek ve bağlamak için gerekli detayları sağlamaktır. Bu meta veriler pkg-config dosyalarında depolanır. Bu dosyalar .pc sonekine sahiptir ve pkg-config aracı tarafından bilinen belirli konumlarda bulunur.
PKG_CONFIG_PATH
Değeri kontrol etmek için bu komutu kullanın:
echo $PKG_CONFIG_PATH
PKG_CONFIG_PATH
Kullanım değerini ayarlamak için :
export PKG_CONFIG_PATH=/usr/lib/pkgconfig
veya
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
İlk cevap teknik olarak yeterince açık değil. Man sayfasından (bir terminal açın, şunu yazın man pkg-config
):
pkg-config
Özel meta veri dosyalarından paketler hakkında bilgi alır. Bu dosyalar paketten sonra adlandırılır ve bir.pc
uzantısı vardır. Çoğu sistemde,pkg-config
bakar/usr/lib/pkgconfig
,/usr/share/pkgconfig
,/usr/local/lib/pkgconfig
ve/usr/local/share/pkgconfig
bu dosyalar için. Ayrıca,PKG_CONFIG_PATH
ortam değişkeni tarafından belirtilen iki nokta üst üste işaretli (Windows'ta noktalı virgülle ayrılmış) dizin listesine bakacaktır .
Yani pkg-config
program PKG_CONFIG_PATH
dizinde değil ; Ancak, bir kitaplık yüklerseniz, bilginin bir automake
komut dosyasında erişilebilir olması için bilginin bir dizinde pkg-config
olması gerektiğinin farkında olması gerekir.
/usr/local/lib/x86_64-linux-gnu
ücretsiz (boş PKG_CONFIG_PATH
) bir otomatik arama yeri olarak ve .pc
GTK + ve ark. - orada yaşa. Bunun nedeni, burada belirtildiği gibi bir paketin aynı anda çok mimarili kullanılabilirliğini sağlamaktır: askubuntu.com/questions/449348/…
pkg-config
, sisteminizde arama yapacak varsayılan yolları nasıl kontrol edebileceğinizi gösterdi : askubuntu.com/a/373217/436580
Pkg-config'nin (sürüm 0.24 veya üstü) varsayılan olarak yüklü kitaplıkları nerede aradığını görmek için aşağıdaki komutu kullanın:
pkg-config --variable pc_path pkg-config
Bu yolu değiştirmek için PKG_CONFIG_PATH
ortam değişkenini ayarlayın . Adam dosya devletler PKG_CONFIG_PATH
:
Sütunla ayrılmış (Windows'ta, noktalı virgülle ayrılmış) .pc dosyalarını aramak için dizin listesi. Varsayılan dizin her zaman yolu aradıktan sonra aranacaktır; varsayılan değer libdir / pkgconfig: datadir / pkgconfig, burada libdir, pkg-config ve datadir öğelerinin, pkg-config'nin kurulu olduğu datadir olduğu libdir'dir.
echo $(pkg-config --variable pc_path pkg-config)${PKG_CONFIG_PATH:+:}${PKG_CONFIG_PATH}
PKG_CONFIG_PATH
ve hala varsayılan aranan dizinler vardır, ayrıca boş olmayan bir değerin ayarlanması varsayılanları temizlemez.
Bir yazılım parçası oluşturmaya çalışıyorsunuz, diyelim Widget. Widget başka bir kütüphaneye dayanıyor, tartışma uğruna libcog. Widget'ın oluşturma işlemi (muhtemelen bir config betiği) libcog'un nasıl kullanılacağını belirlemek için pkg-config kullanıyor. pkg-config libcog hakkında hiçbir şey bilmiyor.
Libcog yüklü değilse, bu senin sorunun. Standart bir libcog kurulumunun sorunu çözmesi için iyi bir şans var. Sisteminize bağlı olarak, paketin ek bir "geliştirici" sürümünü kurmanız gerekebilir; sonunda "-devel" veya "-dev" vardır, bu nedenle "libcog" yüklerseniz, "libcog-devel" kurmanız da gerekebilir.
Libcog kuruluysa, muhtemelen pkg-config'nin bulabileceği şekilde kurulmamıştır. Muhtemelen sisteminizde bir yerde bir libcog.pc dosyası var. Argüman uğruna, /opt/cog/lib/pkgconfig/libcog.pc adresinde bulunur. Bu durumda, PKG_CONFIG_PATH'yi libcog.pc tutan dizine ayarlayarak pkg-config komutunu anlatabilirsiniz. Yani bir Bourne kabuğundaki veya benzeri bir şey
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/opt/cog/lib/pkgconfig/
Bir kez bittiğinde, başarısız olan komutu tekrar çalıştırmak umarım işe yarayacaktır.
Kitaplıklar ve başlık dosyaları dahil olmak üzere libcog kuruluysa ve bir libcog.pc dosyanız yoksa, işler kötü gidiyor. Muhtemelen standart bir libcog kurulum bilgisi içerir, yoksa Widget ona güvenmezdi. İlk önce libcog'u yeniden yükleyeceğim. Libcog.pc dosyasını el ile oluşturmak mümkündür, ancak doğru bir şekilde elde etmek belirli bir kitaplığa zor ve oldukça spesifiktir.
64 bit sistemimin kılavuz sayfasına baktım ve kafam biraz karıştı. Tek satırda şöyle dedi:
pkg-config, özel meta veri dosyalarından paketler hakkında bilgi alır. Bu dosyalar paketin arkasına .pc uzantılı adlandırılır. Varsayılan olarak, pkg-config bu dosyalar için dizin önekine / lib / pkgconfig'e bakar; ayrıca, PKG_CONFIG_PATH ortam değişkeni tarafından belirtilen dizinlerin sütunla ayrılmış (Windows'ta noktalı virgülle ayrılmış) dizin listesine bakacaktır.
Bunun lib / pkgconfig dizinlerine baktığını sanmıştım. Dizinleri kendileri kapatır. Benim durumumda, merhaba dünya gtk öğreticisini derlemeye çalışıyordum. Örneğin istediğim dosyayı buldum
locate gtk | grep '\.pc'
Sonuçlar arasında:
/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-3.0.pc
Sonunda bir ihracat yapmaktı.
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig/
man
Modern, çoklu mimariye sahip sistemler için sayfanın nasıl basitleştirildiğini gösteren +1 . Bir süredir kafam karıştı, çünkü Debian 8 x86'da, pkg-config
zaten x86_64 klasöründe (hiçbir şey olmadan PKG_CONFIG_PATH
) görünüyor. Bunun nasıl birleştirildiğinden emin değilim, ancak @GrandAdmiral tarafından gösterilen bunu sorgulayan komut satırı, kendi paketi --variable pc_path
için ayarlanmış (bir şekilde!) Tarafından kontrol edildiğini gösteriyor pkg-config
.
Bana öyle geliyor ki cevapların çoğunda gereğinden fazla bilgi var.
Birinin yüklediği yazılım (ve genellikle yapar) bazı kütüphanelere ve / veya başlıklara dayanabilir ve Sistem onları bulmak için pkg-config kullanır.
Demek ki, pkg-config
bu dosyaları önceden tanımlanmış (varsayılan) sistemin dizinlerinde arar. Bu klasörler "önek" dir. Örneğin öneki /usr/local
olan bir kütüphanenin başlıkları olması beklenir /usr/local/include
ve kütüphanenin kendisi de içinde olacaktır /usr/local/lib
.
Ancak pkg-config , PKG_CONFIG_PATH ortam değişkeninde listelenen dizindeki kütüphaneleri de arar .
Ardından, varsayılan klasör listesinin dışına yazılım yüklerseniz, listeyi "ayarlamanız" gerekir, yani dizinlerinizi PKG_CONFIG_PATH dizinine ekleyin.
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:<your-directory>
PKG_CONFIG_PATH
sadece yourPkg.pc
( pkg-config
şartname) dosyaların aranacağı ek dizinleri belirtir . Kütüphane arama dizinleri gibi pkg'ye özgü şeyleri etkilemez.
Axel'in en son sürümünü kurmaya çalışıyordum ve koştum ./configure
ve şunu anladım:
configure: error: Package requirements (openssl) were not met:
No package 'openssl' 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 SSL_CFLAGS
and SSL_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.
Bu yüzden denedim:
$ pkg-config --cflags openssl
ve anladım:
Package openssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `openssl.pc'
to the PKG_CONFIG_PATH environment variable
No package 'openssl' found
Açıkça belli ki openssl kurdum ( sudo apt-get install openssl
) Ama yukarıdaki çıktıda gördüğünüz gibi "Hiçbir paket 'openssl' bulunamadı" ifadesini kullandı. Yaptığımdan emin olmak için:
find / -type f -name "*.pc" |& grep -iv permission | grep openssl
Kesinlikle başka bir pakete ihtiyacım var, bu yüzden biraz googling ve bu paketi kurmak zorunda olduğumu öğrendim:
sudo apt-get install libssl-dev
Bütün bunların pkg-config path env değişkenini değiştirmeyle ilgisi yoktu.
Https://github.com/confluentinc/confluent-kafka-go kullananlar
Lütfen librdkafka kurulumunu takip edin
Şimdi go install / go run go build kullanabilirsiniz