/ Usr / include / sys ve / usr / include / linux arasındaki fark nedir?


12

Açıkçası bir fark var, ama bazı şeylerin neden / usr / include / sys altına, diğerleri / usr / include / linux altına girip aynı başlık dosya adına sahip olmasının arkasındaki rasyonelliği merak ediyorum? Bunun POSIX vx POSIX olmayanlarla bir ilgisi var mı?

Ayrıca, / usr / include / linux'u Fedora sistemimdeki başlıklarla doldurmayı başardım, çekirdek başlık paketini alıp / usr / include / sys altına başlık dosyaları almak için standart bir paket adı var mı? ? Onu bulamadım.

Yanıtlar:


14

Altındaki /usr/include/linuxve altındaki üstbilgiler /usr/include/asm*Linux çekirdeğiyle dağıtılır. Diğer başlıklar ( /usr/include/sys/*.h, /usr/include/bits/*.hve daha pek çoğu) C kütüphanesiyle ( tüm yerleşik olmayan Linux sistemlerinde glibc olarak da bilinen GNU C kütüphanesi ) dağıtılır . Glibc kılavuzunda küçük bir açıklama var .

O Not /usr/include/linuxve /usr/include/asmC kütüphanesi, çalışan çekirdekten değil başlıklar derlerken kullanıldı başlıklarını içermelidir. Aksi takdirde, bazı sabitler veya veri yapıları değiştiyse, derlenmiş program ve C kütüphanesi arasında bir çökme veya daha kötü sonuç vermesi muhtemel bir tutarsızlık olacaktır. (Başlıklar C kütüphanesiyle eşleşiyorsa, ancak C kütüphanesi çekirdeğe uymuyorsa, aslında çekirdeğin kararlı bir ABI tutacak şekilde tasarlanması ve bunun farklı bir ABI altında çağrıldığını tespit etmesi ve sistem çağrı argümanlarını buna göre yorumlaması gerekir. Çekirdek statik olarak derlenmiş programlar için bunu zaten yapmalıdır.)

Debian ve Red Hat arasında bir süre önce (on yıl önce) hararetli bir tartışmayı hatırlıyorum /usr/include/linux; Görünüşe göre her iki taraf da yerine yapışıyor. (Anladığım kadarıyla, Debian yukarıda açıklandığı gibi haklıdır.) Debian şu anda çekirdek kaynaklardan derlenen ancak çekirdekle yükseltilmeyen pakete /usr/include/linuxve arkadaşlarını dağıtır linux-libc-dev. Çekirdek başlıkları, linux-headers-2.6meta paketi sağlayan sürüme özgü paketlerde bulunur ; belirli bir çekirdek sürümü için bir modül derlemeniz gereken budur.

Aradığınız paket C kütüphane başlıklarıdır. Ne dendiğini bilmiyorum, ama öğrenebilirsin yum provides /usr/include/sys/types.h.


2
Son bitin cevabı glibc-headers.
mattdm
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.