Wie kann ich meine eigene glibc C-Standardbibliothek aus dem Quellcode kompilieren und verwenden?

Lesezeit: 3 Minuten

Benutzer-Avatar
pythonisch

Ich versuche, meine eigene glibc zu kompilieren. Ich habe ein Verzeichnis glibcdie die enthalten glibc Quellcode, den ich aus dem Internet heruntergeladen habe. Aus diesem Verzeichnis habe ich eingegeben mkdir ../build-glibc. Jetzt von der build-glibc Verzeichnis, das ich eingegeben habe ../glibc/configure, die die Konfiguration durchgeführt hat. Jetzt bin ich mir nicht sicher, wie ich anrufen soll make. Ich kann es nicht anrufen glibc Verzeichnis, da es nicht über die Konfiguration verfügt, kann ich es auch nicht aufrufen build-glibc, da makefile sich nicht in diesem Verzeichnis befindet. Wie löse ich dieses Problem?

  • hast du gelesen gnu.org/software/libc/manual/html_mono/libc.html#Installation ?

    – fvu

    2. Mai 2012 um 11:23 Uhr

  • Ja, ich habe es gelesen, es heißt nur Anruf tätigen, aber meine Frage ist, von wo aus soll ich anrufen und wie? Ich kann es nicht aus dem build-Verzeichnis und auch nicht aus dem glibc-Verzeichnis aufrufen, da configure nicht von dort aus aufgerufen wurde.

    – pythonisch

    2. Mai 2012 um 11:28 Uhr


  • Laufen make aus dem Verzeichnis, das die Make-Datei enthält.

    – David Schwartz

    2. Mai 2012 um 11:30 Uhr

  • Ich habe es versucht, es funktioniert nicht, es sagt folgendes. Die GNU C-Bibliothek wurde nicht konfiguriert. Laufen configure' to configure it before building. Try configure –help’ für weitere Details. make: Makefile `sysdeps/../config.make’ konnte nicht neu erstellt werden. Und wenn ich versuche, ./configure aus demselben Verzeichnis aufzurufen, heißt es, ein separates Build-Verzeichnis verwenden.

    – pythonisch

    2. Mai 2012 um 11:35 Uhr


  • Dann offenbar configure gescheitert. Hat es eine Fehlermeldung ausgegeben?

    – Fred Foo

    2. Mai 2012 um 11:37 Uhr

  • Ist das die längste Antwort auf SO?

    – Nick Kamel

    27. Juni 2019 um 9:18 Uhr

  • @niCkcAMel Dies sind wahrscheinlich meine bisher längsten (arbeitsintensiven) Antworten: stackoverflow.com/questions/18431261/how-does-x86-paging-work | stackoverflow.com/questions/22054578/… | stackoverflow.com/questions/26294034/…

    – Ciro Santilli Путлер Капут 六四事

    27. Juni 2019 um 10:14 Uhr

  • Hallo @CiroSantilli. Ist glibc in gcc-9.3 enthalten gcc.gnu.org/gcc-9?

    – Calvin

    13. November 2020 um 7:18 Uhr

  • @calvin Ich habe nichts von solchen Änderungen gehört, also AFAIK nein.

    – Ciro Santilli Путлер Капут 六四事

    13. November 2020 um 8:30 Uhr


  • @CiroSantilliTRUMPBANISBAD Beim Bearbeiten Ihrer Antwort wird “Vorgeschlagene Bearbeitungswarteschlange ist voll” zurückgegeben. ldd-Skript, das Sie in test_glibc.sh aufrufen, zeigt auf den dynamischen Linker des Hosts: “/home/ciro/glibc/build/install/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux- x86-64.so.2 (0x00007fc12f1b3000)”. Um dies zu beheben, ändern Sie in test_glibc.sh „ldd“ in „${glibc_install}/bin/ldd“. Dazu müssen Sie dem Skript auch die erstellten crt*.o-Dateien hinzufügen: -nostartfiles \ ${glibc_install}/lib/crti.o \ ${glibc_install}/lib/crtn.o \ ${glibc_install}/lib /crt1.o \ Siehe meine Antwort: stackoverflow.com/a/66634184/4726668

    – ZeZNiQ

    15. März 2021 um 7:54 Uhr


  • Danke für diesen Vorschlag, sieht interessant aus. Als ich es unter Ubuntu 20.10 glibc 2.32 ausprobierte, bekam ich Fehler ${glibc_install}/bin/ldd ./test_glibc.out gibt not a dynamic executable und ./test_glibc.out gibt ./test_glibc.out: No such file or directory. Ich hielt nicht an, um weiter nachzuforschen.

    – Ciro Santilli Путлер Капут 六四事

    15. März 2021 um 11:46 Uhr

  • @Ciro Auf den ersten Blick sagt mir dieser Fehler “keine solche Datei oder kein solches Verzeichnis”, dass Sie das Skript wahrscheinlich so kopiert und eingefügt haben, wie es auf 32-Bit getestet wurde, und es auf Ihrem 64-Bit-Arch-Computer ausprobiert haben. Bitte beachten Sie, dass der dynamische Linker für 32-Bit und 64-Bit unterschiedlich ist. Deshalb hatte ich dort auf meiner Maschinenkonfiguration eine Notiz gemacht, “GNU/Linux i386/i686-Maschine”, die eine 32-Bit-Architektur ist.

    – ZeZNiQ

    15. März 2021 um 19:19 Uhr


  • Ops, ja, jetzt habe ich das behoben und ./test_glibc.out hat funktioniert. Aber die ${glibc_install}/bin/ldd ./test_glibc.out ist aus irgendeinem Grund immer noch fehlgeschlagen.

    – Ciro Santilli Путлер Капут 六四事

    15. März 2021 um 19:55 Uhr

  • Vielleicht zeigt die Variable “RTLDLIST” in diesem LDD-Skript auf den falschen dynamischen Linker?

    – ZeZNiQ

    15. März 2021 um 23:06 Uhr

1351640cookie-checkWie kann ich meine eigene glibc C-Standardbibliothek aus dem Quellcode kompilieren und verwenden?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy