Probleme beim kompilieren von C-code auf ubuntu. (#include-Fehler)
Ich versuche zu kompilieren eines C-Programms auf die neueste version von ubuntu, die für den Zweck der Umsetzung des kompilierten Programms auf einem anderen Computer später. Wenn ich allerdings das kompilieren mit gcc prog.c -o prog, bekomme ich eine Fehlermeldung: "schwerwiegender Fehler: asm/page.h: No such file or directory" Hier sind die überschriften:
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <limits.h>
#include <signal.h>
#include <unistd.h>
#include <sys/uio.h>
#include <sys/mman.h>
#include <asm/page.h>
#include <asm/unistd.h>
Bekomme ich einen Fehler bei #include . Es sagt schwerwiegender Fehler: asm/page.h: No such file or directory. Wie ich schon sagte, ich bin gerade auf der Suche, um es zu kompilieren. Gibt es eine Möglichkeit für mich, um die fehlenden header oder so? Danke.
- Was ist Ihr Programm tun soll? Warum kommt es zu den oben genannten Chaos? Zeigen viel mehr von deinem Quelltext, nicht nur die
#include
Richtlinien!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Normalerweise
asm/page.h
gibt es nur in der Linux-kernel-tree, normalerweise unterarch/<archname>/asm/page.h
, und sollte nur verwendet werden, code mit kernel (oder kernel-Module).stdio.h
undstdlib.h
, auf der anderen Seite, dürfen nicht verwendet werden, die in kernel-code.So, Ihrer ursprünglichen Quellcode sieht verdächtig am besten. Wahrscheinlich ist es nie erforderlich, dass
asm/page.h
den ersten Platz, und in Wirklichkeit ist es nur braucht so etwas wielinux/types.h
(dies ist eine der Kopfzeilen enthalten, die von einem kernel -asm/page.h
).asm/page.h
(wiePAGE_SIZE
) sind insys/user.h
, nicht inlinux/types.h
.Diese header-Dateien fehlen nicht, Sie wurden verschoben. Die ubuntu-Paketbetreuer zog die Dinge um und die Position der header-Dateien, die verwendet werden, um in '/usr/include/asm' befinden sich nun in '/usr/include/asm-generic '
Zu beheben, fügen Sie einfach einen link:
... oder vielleicht sind Sie wahrscheinlich fehlt build-essential. Dies ist notwendig, um Code zu kompilieren, unter linux .
install build-essential
Nun neu der richtige link:
Build-essential installieren, sollte /usr/include/asm-generic". Wenn Sie nicht über einen solchen Ordner neu installieren, build-essentials und überprüfen Sie die Ordner vorhanden ist.
Nicht der /usr/include/asm-generic-Ordner vorhanden???
Ist es installiert build-essentials, sondern untersuchen es ist eine Abhängigkeit, die Sie installiert.
wenn /usr/include/asm-generic nicht vorhanden ist, versuchen Sie zu installieren oder installieren Sie linux-libc-dev.
Dass sollten die asm-generic". Wenn ja, löschen Sie die alte Verknüpfung, und verknüpfen von asm zu asm-generic.
asm
zuasm-generic
scheint wirklich dirty hack, ist es nicht wahrscheinlich, irgendwie zu helfen. Auf den meisten neueren Ubuntu 13.04, während directory/usr/include/asm-generic
existiert,page.h
nicht (undbuild-essential
undlinux-libc-dev
installiert sind).