Villkora kod beroende på vald uC i Atmel Studio 6?

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Villkora kod beroende på vald uC i Atmel Studio 6?

Inlägg av sodjan »

Ni snackar om varandra. Humor! :-)
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: Villkora kod beroende på vald uC i Atmel Studio 6?

Inlägg av stekern »

snigelen skrev:Den (avr-ld) länkar in hela de objekt-filer (.o) som finns i lib-filen (.a) om man använder något från objekt-filen. Man bör alltså ha orelaterade delar i olika objekt-filer annars tas rubbet med. Detta gäller förstås inte om man använder LTO (Link Time Optimization), men det är relativt nytt och kanske inte helt robust än.
Du kan uppnå det samma utan LTO, genom att använda gcc -ffunction-sections -fdata-sections och ld --gc-sections
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Villkora kod beroende på vald uC i Atmel Studio 6?

Inlägg av snigelen »

Jo det går ju, och gör man ett lib man bara skall använda själv så kan man ju använda det. Men det är väl inte att rekomendera om man gör ett lib som skall användas av andra; att tvinga på dem att använda -function-sections/-gc-sections är inte så "snällt". T.ex rekomenderar avr-libc-manualen:
How the linker behaves is very important in designing a library. Ideally, you want to design a library where only the functions that are called are the only functions to be linked into the final application. This helps keep the code size to a minimum. In order to do this, with the way the linker works, is to only write one function per code module. This will compile to one function per object module. This is usually a very different way of doing things than writing an application!
Användarvisningsbild
stekern
Inlägg: 453
Blev medlem: 2 november 2008, 08:24:18
Ort: Esbo, Finland

Re: Villkora kod beroende på vald uC i Atmel Studio 6?

Inlägg av stekern »

Jo, jag håller med, bättre är ju att organisera sin kod så att .o filerna blir vettiga istället då.
Användarvisningsbild
Wedge
Inlägg: 1026
Blev medlem: 8 juli 2012, 17:33:33

Re: Villkora kod beroende på vald uC i Atmel Studio 6?

Inlägg av Wedge »

En fulvariant jag sett i Arduinosammanhang är att skriva ett "lib" som placeras i samma kataloggren som andra Arduinolib, men där .c-filen är i stort sett tom, och all implementation ligger i .h-filen. Man kommer då att länka med ett tomt "riktigt" lib, och .h-filen får man ju ändå alltid inkludera.
Man kan då distribuera och installera koden som om den vore bibliotekskod, men den kompileras specifikt för varje projekt/target.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43178
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Villkora kod beroende på vald uC i Atmel Studio 6?

Inlägg av sodjan »

En .c fil är inget "lib".
För att resonemnget ska vara rellevant så ska det vara objektkod.
I det fall du beskriver (med en .c fil) så kan man lika gärna kompilera den
rakt av istället för att köra med en "ful-h" fil. Om man istället distribuerade
en tom .o fil (eller .lib) så hade jag förstått det bättre.

I alla fall i det generella fallet, om Arduino har något "eget" för sig vet jag inte... :-)
Skriv svar