file header c multipli con lo stesso nome

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
zenzerobollito
Prode Principiante
Messaggi: 2
Iscrizione: giovedì 9 marzo 2023, 12:51

file header c multipli con lo stesso nome

Messaggio da zenzerobollito »

Ciao.
Potreste spiegarmi perche' diversi file header con lo stesso nome sono presenti in piu' di un posto nello stesso sistema?
Per esempio, ecco dove si trovano vari esemplari di stdio.h in ubuntu 20.4:
------------------------------------------
ciccio@ciccio-81mt:/usr$ find -name stdio.h
./include/x86_64-linux-gnu/bits/stdio.h
./include/c++/9/tr1/stdio.h
./include/stdio.h
-------------------------------------
I contenuti di questi file sono diversi, ho controllato.
Suppongo che quello realmente incluso nei codici c con la direttiva
#include<stdio.h>
sia /usr/include/stdio.h
A cosa servono gli altri? Da chi o da che cosa vengono usati e quando?
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: file header c multipli con lo stesso nome

Messaggio da DoctorStrange »

Di solito vari pacchetti e varie versioni di software, possono portarsi dietro diverse riscritture della medesima libreria. Ad esempio la glibc è famigerata per questo.
Assicurati di quanti pacchetti Debian tu abbia, assicurati che il risultato della ricerca siano veri pacchetti, e non dei semplici link ma, comunque ti renderai lo stesso conto che ce ne sono numerosi.
Per questo motivo, quando si compila un software, nel suo Makefile, bisognerebbe sempre usarel'FQDN (Full Qualified Domain Name) oppure, in alternativa, impostare il base path e, da li i percorsi di tutte le dipendenze
zenzerobollito
Prode Principiante
Messaggi: 2
Iscrizione: giovedì 9 marzo 2023, 12:51

Re: file header c multipli con lo stesso nome

Messaggio da zenzerobollito »

Grazie DoctorStrange.
In effetti, come dici tu, ho notato la presenza di librerie/headers che, a volte, sembrano un po' fuori luogo.
Ho fatto la stessa indagine sull'header stdio.h nell'estrazione di src.tar.gz e sys.tar.gz di openbsd (scaricabili dai mirror) e ho trovato tutti questi:

./include/stdio.h
./gnu/usr.bin/gcc/gcc/fixinc/tests/base/stdio.h
./gnu/llvm/libcxx/include/stdio.h
./gnu/gcc/fixincludes/tests/base/stdio.h
./gnu/gcc/libstdc++-v3/include/c_compatibility/stdio.h
./gnu/gcc/libstdc++-v3/include/tr1/stdio.h
./gnu/gcc/libssp/ssp/stdio.h
./gnu/lib/libstdc++/libstdc++/include/c_compatibility/stdio.h
./lib/libc/hidden/stdio.h

Sapendo che openbsd non usa glibc, forse tutto quel che si riferisce a gnu è lì per qualche pacchetto particolare che, in qualche momento, potrebbe richiederlo.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Sargonsei e 5 ospiti