Undefined reference to __libc_init_array
Ich versuche zu kompilieren, einige-code für einen STM32-chip mit CodeBench G++ Lite tools. Jedoch, es wird ein Fehler generiert.
startup.o: In function `LoopFillZerobss':
(.text.Reset_Handler+0x2a): undefined reference to `__libc_init_array'
Habe ich gegoogelt und es scheint, dass libc_init_array wahrscheinlich ist das Teil der standard-gcc-Bibliothek...aber ich bin nicht sicher, wie Sie dieses Problem beheben Fehler?
Ich habe auch Fehler wie dieser
arm-none-eabi-ld: cannot find libc.a
ebenso für die libgcc.a und libm.ein
Überprüfen Sie Ihre compiler-installation, fügen Sie auch "-v" - option zu überprüfen, die Bibliothek, Pfad und stellen Sie sicher, es gibt Bibliotheken, die benötigt werden.
InformationsquelleAutor cksa361 | 2012-02-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Funktion
__libc_init_array
ist Teil von CodeSourcery 'CS3' - Mechanismus für 'start up' - code, der garantiert, dass alle a-Programme statische Initialisierung geschieht vormain
ausgeführt wird.Beginnen Sie, indem sichergestellt wird, dass alle von den Bibliotheken zu finden sind. Das ist vielleicht genug, alle Probleme zu beheben.
Ein Ansatz ist die Verwendung von arm-none-eabi-g++, und nicht arm-none-eabi-ld direkt, zu tun, die Verknüpfung, weil g++ sollte ordnungsgemäß übergeben, einige wichtige Parameter, die zu arm-none-eabi-ld. In einigen Fällen, das ist vielleicht alles, was benötigt wird, zu finden, und verknüpfen Sie die richtigen Bibliotheken.
Wenn Sie nicht sicher sind, wie zu bauen, auf der Kommandozeile oder arm-none-eabi-g++ nicht alles tun, um zu beheben die fehlende Bibliotheken gehen und haben einen Blick auf LeafLabs Website, wo Sie zeigen, wie bauen von der Befehlszeile aus mithilfe von Makefiles
http://leaflabs.com/docs/unix-toolchain.html
Bieten Sie eine Kostenlose, Open-Source-IDE für den STM32, gebaut für Windows, Linux und Mac, die auch ein arbeiten gcc-basierte toolchain für alle diese Plattformen, und genug von den Bibliotheken, um loszulegen http://leaflabs.com/docs/maple-ide-install.html
Selbst wenn Sie es vorziehen, verwenden Sie Ihre Werkzeuge für den Aufbau, kann es sich lohnen, mit Ihnen, mit Ihren Makefiles zu sanity-check der Prozess, den Sie verwenden, um erstellen Sie Ihr Programm.
Ich bin nicht Mitglied der LeafLabs Personal, und haben keine Beziehung mit dem Unternehmen anders als ich es gekauft habe, einige Ihrer Produkte, und versuchen, Sie zu beantworten Fragen auf dem forum.
InformationsquelleAutor gbulmer