2011-06-28 25 views
6

Son zamanlarda sorunlu bir ld komut dosyasını düzeltmeye çalışırken çok zaman harcadım. Bir keresinde (kağıt üzerinde) çizdiğim tüm farklı bölümleri problemi çözebildim.linker script generator

Bu yüzden bir çeşit LD komut üreteci aramaya başladım, ancak bulamadım! Böyle bir araç var mı bilen var mı? ld komut dosyalarını veya harita dosyası/elf dosyasını içe/dışa aktarabilen ve farklı nesneleri/bölümleri ve adresleri gösterebilen bir şey mi?

Orada LD-scripts hakkında endişelenmenize gerek yok ama eclipse kullanıyorum ve hatta sözdizimi vurgulama bile sunmuyor bazı IDE vardır biliyorum!

+0

Green Hills MULTI araç setinde tescilli bir araç var. Başka bir yerde böyle bir araç görmedim. Bununla birlikte, bunu görüntülenmek veya düzenlemek için yararlı buldum. Bölümleri yürütülebilir dosyadan kendi başlığına boşaltma ve kendi grafiğinizi yuvarlama, muhtemelen hızlı bir iş olacaktır. 'Bazı IDE'ler' hakkındaki notunuz bana linker betiğiyle tam olarak ne yaptığınızı sorguluyor. Ancak ... – djs

+0

Evet, yukarıda önerdiğim şey aslında benim yaptığım şey. Benim yapmak istediğim, bu işi otomatik hale getirmek (bir çeşit GUI). Linker scriptim oldukça karmaşıktır, flash/internal & external ram'da birçok farklı bölüm vardır, bu yüzden linker betiklerinin sihrini elle kontrol etmek için zaman alan bir iştir. – theAlse

cevap

2

Bildiğim kadarıyla, bu amaçla hiçbir ticari olmayan araç bulunmaktadır.

+0

Bunu yapmak için bir araç görmediğim için bunu bir cevap olarak kabul edeceğim! – theAlse

3

LD komut dosyaları için herhangi bir WYSIWYG düzenleyicisi bilmiyorum, ancak bu tür sorunları grafik olarak ayıklamanıza yardımcı olabilirim.

Bunun bir çalışma zamanı sorunu olduğunu ve derleme zamanı sorunu olmadığını varsayalım. Bu durumda, neler olup bittiğine dair bir fikir edinmek için harita çıktısını linkerden kullanabilirsiniz.

gcc -Wl,-Map=main.map main.c 

haritası dosyası

sonra grep ile çözümlenebilir ya da bölümleri ve semboller hatalarını ayıklamak için dosya için bir graphical viewer kullanabilirsiniz.

Ayrıca bağlantılı yürütülebilir benzer sonuçlar elde etmek için nm kullanabilirsiniz:

nm -S --size-sort a.out