Domanda

sto usando Gentoo e cercando di compilare un programma per controllare i bit sulla porta parallela. Ha questa linea vicino alla parte superiore di esso:

#include <asm/io.h>

E quando cerco di usare gcc su di esso, produce questo output:

  

port.c: 4: 20: errore: asm / io.h: Nessun file o directory

"individuare ASM / io.h" yeilds (tra le altre cose):

  

/usr/src/linux-2.6.32-gentoo/arch/x86/include/asm/io.h

Così ho il file di intestazione, ma non è trovarlo? Perché questo non funziona?

È stato utile?

Soluzione

Non sono sicuro se sei l'autore del programma o si sta solo cercando di compilare un programma che hai da qualcuno, ma sembra #include <asm/io.h> dovrebbe essere sostituito con #include <sys/io.h>. Vedere i risultati di questa ricerca google per più informazioni.

Altri suggerimenti

Mai utilizzare i codici / intestazioni in /usr/include/asm. Utilizzare le intestazioni in /usr/include/sys invece.

Quello che state facendo utilizzando /usr/include/asm/ sta costruendo il proprio codice contro uno specifico la revisione degli header del kernel. Questo è soggetto a rotture quando gli header del kernel cambiano. Collegando l'altra posizione, è un collegamento a una forma più stabile delle intestazioni di glibc, che farà riferimento al header del kernel, se necessario. Ecco perché c'è un grande complesso di linee #ifdef ... #endif pepato tutto nelle intestazioni.

Fidati di me, tutti gli strumenti necessari per il bit-giocherellare con le porte parallele saranno in /usr/include/sys/io.h, dal momento che probabilmente tutto si sta andando ad essere utilizzando sono readb() diretto e writeb() chiamate al dispositivo /dev/lpX appropriata.

Potrebbe essere necessario aggiungere il percorso. Sulla riga di comando gcc:

gcc -I/usr/src/linux-2.6.32-gentoo/arch/x86/include ...

try

gcc -I/usr/src/linux-2.6.32-gentoo/arch/x86/include xyx

dove xyz è il file che si sta cercando di compilare.

Questo dice al compilatore dove cercare includere i file. Si possono avere molte opzioni -I se il file include sono in luoghi diversi, come questo

gcc -I/usr/src/linux-2.6.32-gentoo/arch/x86/include -I/usr/src/some/Dir xyx

Aggiungi -I / usr / src / linux-2.6.32-gentoo / arch / x86 / include alla riga di comando di compilazione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top