Raiden86 Geschrieben 6. April 2010 Geschrieben 6. April 2010 Heyo, möchte mich ein bisschen in den Definitionen der Funktionen umsehen. Ich find die C-Header auf meinem Ubuntu Karmic nicht, kann mir da jemand weiterhelfen? Zweitens: Ich erinnere mich aber, dass die Header nur die Deklarationen beinhalteten, d.h. int printf(char *s); zum Beispiel. Wo werden die Funktionen denn ausgeschrieben (also definiert) gespeichert? Würde echt gern wissen, wie so die ein oder andere Funktion, äh.. funktioniert Danke schonmal, --Alex Zitieren
lupo49 Geschrieben 6. April 2010 Geschrieben 6. April 2010 Schau mal in das Paket libc6-dev. Zitieren
lilith2k3 Geschrieben 7. April 2010 Geschrieben 7. April 2010 Ubuntu kommt von Haus aus nur mit dem Nötigsten Ich weiß nichtmal, ob da überhaupt "make" mitgeliefert wird. Insofern sudo aptitude install gcc libc6-dev und Du solltest mit dem Wichtigsten versorgt sein. Entsprechend mußt Du Dir bei Bedarf auch die anderen "dev"-Pakete ziehen. Da ist Gentoo bspw. ein wenig komfortabler Zitieren
carstenj Geschrieben 7. April 2010 Geschrieben 7. April 2010 Hi, Wo werden die Funktionen denn ausgeschrieben (also definiert) gespeichert? um die anzusehen, musst auch noch die glibc-source installieren. Dort liegen so Core Funktionen wie prinft, malloc etc. drin. Das ist aber recht komplex. Zitieren
Raiden86 Geschrieben 7. April 2010 Autor Geschrieben 7. April 2010 Hiho, danke für die Antworten. glibc6-dev war tatsächlich schon installiert. (make übrigens auch ), allerdings, ähem, ist mir fast peinlich, aber: wo liegen die files denn? Zitieren
flashpixx Geschrieben 7. April 2010 Geschrieben 7. April 2010 Hiho, allerdings, ähem, ist mir fast peinlich, aber: wo liegen die files denn? Welche? Die Header oder die Libs? Die Libs typischerweise unter /lib oder /lib64 bzw /lib32 die Header unter /usr/lib32 oder /usr/lib64 ..../<gcc-profile>/include für den Kernel unter /usr/src/<kernel source>/include Warum willst Du das wissen, wenn Du selbst includierst werden die entsprechenden Verzeichnisse automatisch nach den passenden Headerdateien durchsucht und sofern sie installiert sind, kannst Du kompilieren. Der Linker durchsucht auch die unter /etc/ld.so.conf gelisteten Verzeichnisse nach den Libs, so dass man diese nur über das I-Flag des GCC angeben muss Zitieren
Raiden86 Geschrieben 7. April 2010 Autor Geschrieben 7. April 2010 Welche? Die Header oder die Libs? Die Libs typischerweise unter /lib oder /lib64 bzw /lib32 die Header unter /usr/lib32 oder /usr/lib64 ..../<gcc-profile>/include für den Kernel unter /usr/src/<kernel source>/include Warum willst Du das wissen, wenn Du selbst includierst werden die entsprechenden Verzeichnisse automatisch nach den passenden Headerdateien durchsucht und sofern sie installiert sind, kannst Du kompilieren. Der Linker durchsucht auch die unter /etc/ld.so.conf gelisteten Verzeichnisse nach den Libs, so dass man diese nur über das I-Flag des GCC angeben muss Ich find in /lib (sowie /usr/lib) viele viele *.so Dateien (das sind binäre, hm?), aber keine C Quelltexte. Irgendwas mach ich falsch. Ich will das wissen, weil ich z.B. sehen will, wie getaddrinfo() geschrieben ist. Das Inkludieren klappt, sicher. Aber ich möcht mir die Files mal ansehen, WAS da überhaupt drinsteht Zitieren
flashpixx Geschrieben 7. April 2010 Geschrieben 7. April 2010 Ich find in /lib (sowie /usr/lib) viele viele *.so Dateien (das sind binäre, hm?), aber keine C Quelltexte. Irgendwas mach ich falsch. Du brauchst für die Benutzung nicht die Codes. Für die Benutzung reicht der Header + die binäre Datei zum linken Ich will das wissen, weil ich z.B. sehen will, wie getaddrinfo() geschrieben ist. Das Inkludieren klappt, sicher. Aber ich möcht mir die Files mal ansehen, WAS da überhaupt drinsteht Du brauchst die *.c bzw *.cpp Dateien und die findest Du innerhalb Deines Paketbaums als entsprechende devel-Pakete. Alternativ schaut man auf der Webseite der Entwickler nach, meist kann man dort die Source laden bzw aus einem SVN auschecken Zitieren
carstenj Geschrieben 7. April 2010 Geschrieben 7. April 2010 Hi, wie schon erwähnt, du musst für die Quellcodes der glibc das entsprechende Paket installieren. Die Dateien liegen dann unter Ubunutu hier: /usr/src/glibc/glibc-<VERSION> Getaddrinfo z.B.hier: usr/src/glibc/glibc-<VERSION>/posix/getaddrinfo.c Aber das ist nicht nur C, viele Routinen sind auch in Assembler geschrieben. Du musst dir dann allerdings auch die Makefiles angucken, damit du weisst, was alles dazuverlinkt wird. Das kann schon sehr komplex werden. Zitieren
Raiden86 Geschrieben 7. April 2010 Autor Geschrieben 7. April 2010 (bearbeitet) Du brauchst für die Benutzung nicht die Codes. Für die Benutzung reicht der Header + die binäre Datei zum linken Du brauchst die *.c bzw *.cpp Dateien und die findest Du innerhalb Deines Paketbaums als entsprechende devel-Pakete. Alternativ schaut man auf der Webseite der Entwickler nach, meist kann man dort die Source laden bzw aus einem SVN auschecken Jup, für die Benutzung. Ich möcht aber, wie gesagt, sehen, wie die Funktionen etc programmiert wurden. Ich hab mir jetzt die gcc source geladen und da drin ein bisschen rumgestöbert. Ohne der Suche hätt ich mich da gar nicht zurecht gefunden Ich finde z.B. stdio.h, aber nicht socket.h - sehr komisch. Weißt du da nen Grund dafür? Und ich finde die Dateien, in denen z.B. malloc() definiert wird, noch nicht. In Windows (wo ich mir die gcc src geladen hab) kann ich glaube ich nicht nach Dateiinhalt suchen. //edit: Aber das ist nicht nur C, viele Routinen sind auch in Assembler geschrieben. Du musst dir dann allerdings auch die Makefiles angucken, damit du weisst, was alles dazuverlinkt wird. Das kann schon sehr komplex werden. Hm, ich hab gerade glibc installiert, /usr/src ist bis auf die "kernel-header" noch leer. Ich glaube, ich geb einfach auf, und benutz die #include-Teile weiterhin als Black Box Bearbeitet 7. April 2010 von Raiden86 Zitieren
lupo49 Geschrieben 7. April 2010 Geschrieben 7. April 2010 Ich finde z.B. stdio.h, aber nicht socket.h - sehr komisch. Weißt du da nen Grund dafür? Und ich finde die Dateien, in denen z.B. malloc() definiert wird, noch nicht. In Windows (wo ich mir die gcc src geladen hab) kann ich glaube ich nicht nach Dateiinhalt suchen. ( Es kann sein das du noch weitere *-dev Pakete nachinstallieren musst. Dafür bringt ja jede Distribution einen (guten) Paketmanager mit. http://packages.ubuntu.com/ http://packages.ubuntu.com/de/hardy/apt-file Du kannst mit der Windows-Dateiinhaltssuche nur in Dateien suchen, die im Windows "registriert" sind. Das kannst du deaktivieren so dass in allen Dateien gesucht wird [1]. Alternativ einen Editor wie Notepad++ verwenden, der kann das auch so. [1] Suchkriterium "Ein Wort oder ein Begriff innerhalb der Datei" funktioniert eventuell nicht Zitieren
carstenj Geschrieben 7. April 2010 Geschrieben 7. April 2010 Hi, Hm, ich hab gerade glibc installiert, /usr/src ist bis auf die "kernel-header" noch leer. du brauchst, wie ich schon schrieb, die glibc-source. Zitieren
lilith2k3 Geschrieben 7. April 2010 Geschrieben 7. April 2010 Wenn Du was lernen willst, guck doch mal bei src/ vorbei src/gnu/lib/libmalloc/malloc.c - annotate - 1.1.1.1 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.