2013-06-07 13 views
6

Windows için taşınan gcc ve binutils olan yagarto4.7.2'a (Merak edenler için bir başka GNU ARM takım zinciri) yükseltmeye çalışıyorum. Bu forum yılında o gcc4.6.x. sonra çıkarıldı, bu başlangıç ​​initialziation kütüphanesi olduğunu açıkça yapılır, Şimdigc4.7.x'ten crt0.o çıkarmanın ardındaki mantık nedir?

c:/yagarto-20121222/bin/../lib/gcc/arm-none-eabi/4.7.2/../../../../arm-none-eabi 
/bin/ld.exe: cannot find crt0.o: No such file or directory 
collect2.exe: error: ld returned 1 exit status 

: Ancak, basit bir Hello World verim derlemek için çalışıyor İki çözümler önerilmektedir:

  • Hem oldukça kirli ve üretim kodu için kabul edilemez bakmak 4.7.x klasörüne

için 4.6.x oluşturan

  • crt0.o kopya -nostartfiles ile derlemek. Yani bu kitaplık neden kaldırıldı ve şimdi eşdeğer nedir biliyor mu?

  • +1

    * yargarto * ile ilgili bazı önemli gerçekler; Önceden oluşturulmuş bir * mingw * tabanlı * newlib * derleyici. Bakınız: [SO gcc newlib soruları] (http://stackoverflow.com/search?q= [gcc] + newlib +% 3Aquestion). Bu tür bir derleyiciyi [crosstool-ng] (http://crosstool-ng.org/) ile oluşturmak mümkündür, ancak bir Kanada kanadalı * olduğu için son derece zordur. –

    +1

    http://stackoverflow.com/questions/18416564/how-to-solve-the-crt0-o-issue-in-cross-compiling – 0x90

    cevap

    3

    crt0.o işletim sistemi tarafından sağlanan crt0.s, elde edilir. Çıplak metal kurulumunda, bu dosya uygulama tarafından sağlanmalıdır. Örneğin .bss'yi sıfırlamak için başlatma ve çıkış kodunu içerir.

    +1

    Çok saçma değil - bir forumda oluşturduğunuz tartışmalar oluşturuldu. bağlamak. SO ayrıca bir bilgi tabanı olarak işlev görür ve kendi cevabınızı kabul etmekte özgürsünüz. –

    +1

    Bu işlevler hakkında belgeler: * En az * uygulamalar dahil olmak üzere [Newlib syscalls] (http://sourceware.org/newlib/libc.html#Syscalls). –

    +0

    Peki hangi işletim sistemi için crt0.s var? – harper