10. februar 2011 - 12:09Der er
5 kommentarer og 1 løsning
Sætte ARM compiler op på 10.10
Hej,
Jeg er begyndt at arbejde med Linux i skolen og jeg skal anvende en bestemt ARM compiler (CodeSourcery 2007 G++) til at kompilere C++ kode til et target. Opgaven går ud på at jeg skal kunne skrive "arm-none-eabi-g++ -o hello hello.cpp" i terminalen for at kompilere et Hello World program (altså ligesom man gør med g++, bare med en anden kompiler). Jeg har downloaded CodeSourcery Compileren og installeret den, men hvordan får jeg lavet det så jeg kan skrive det som beskrevet ovenfor?
Skal jeg lave et alias, eller hvordan skal jeg gøre det? I så fald, hvordan laver jeg så aliaset så det opfører sig rigtigt?
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
Jeg kan ikke rigtig finde ud af, hvorfor det går galt, men jeg får følgende fejl når jeg prøver at kompilere med arm-none-eabi-g++:
~/CodeSourcery/Sourcery_G++_Lite/bin$ ./arm-none-eabi-g++ -o hello hello.cpp /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/bin/ld: warning: cannot find entry symbol _start; defaulting to 00008018 /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-abort.o): In function `abort': abort.c:(.text+0xc): undefined reference to `_exit' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-fstatr.o): In function `_fstat_r': fstatr.c:(.text+0x1c): undefined reference to `_fstat' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-makebuf.o): In function `__smakebuf': makebuf.c:(.text+0xf8): undefined reference to `isatty' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-openr.o): In function `_open_r': openr.c:(.text+0x20): undefined reference to `_open' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-sbrkr.o): In function `_sbrk_r': sbrkr.c:(.text+0x18): undefined reference to `_sbrk' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-signalr.o): In function `_getpid_r': signalr.c:(.text+0x4): undefined reference to `_getpid' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-signalr.o): In function `_kill_r': signalr.c:(.text+0x2c): undefined reference to `_kill' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-sysfstat.o): In function `fstat': sysfstat.c:(.text+0x4): undefined reference to `_fstat' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-syslseek.o): In function `lseek': syslseek.c:(.text+0x4): undefined reference to `_lseek' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-sysread.o): In function `read': sysread.c:(.text+0x4): undefined reference to `_read' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-syswrite.o): In function `write': syswrite.c:(.text+0x4): undefined reference to `_write' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-writer.o): In function `_write_r': writer.c:(.text+0x20): undefined reference to `_write' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-closer.o): In function `_close_r': closer.c:(.text+0x18): undefined reference to `_close' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-lseekr.o): In function `_lseek_r': lseekr.c:(.text+0x20): undefined reference to `_lseek' /home/thomas/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-eabi/4.2.1/../../../../arm-none-eabi/lib/libc.a(lib_a-readr.o): In function `_read_r': readr.c:(.text+0x20): undefined reference to `_read' collect2: ld returned 1 exit status
Har du noget forslag til, hvad jeg gør forkert? :) Jeg kan godt køre den med -c i stedet for -o. Det giver i hvert fald ingen fejl, men når jeg skal lave object-filerne giver den mig fejlene ovenfor.
Lyder mest af alt som om du mangler at linke med et low-level bibliotek af en slags. Google "undefined reference to `_fstat'" giver f.eks. dette: http://www.codesourcery.com/archives/arm-gnu/msg01835.html som foreslår at du tilføjer -T generic.ld når du compiler.
Ah! Der var jo en løsning. Jeg skulle bare have "-T generic-hosted.ld" på i enden ;)
Nu skal jeg bare have lavet et link eller et alias (jeg er ikke sikker på jeg forstår forskellen). Jeg skal på en eller anden måde have lavet det, så uanset hvilken mappe jeg står i kan tilgå compileren med en nem genvej.
Hvad skal jeg søge efter, for at finde en løsning? :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.