Ciao,
scusate la domanda ma abbiate pazienza, non ho neanche ancora la scheda :)
Vorrei sapere se con Arduino è possibile creare librerie precompilate (.lib) da includere nei progetti. Negli esempi che trovo viene sempre distribuito il .h e il .cpp, inoltre nell'ide di Arduino che ho installa non c'è traccia sembrerebbe di alcuna libreria precompilata..
E' possibile includere file .lib? Ed è facile anche realizzarli con l'ide o devo affidarmi a un compilatore standard e successivamente importare nell'ide?
Mi riferisco ovviamente al codice 'on board' in C/C++ che viene caricato sulla scheda e non ai diversi linguaggi con i quali è possibile interfacciarsi tramite seriale!
Non puoi per il semplice motivo che l'Atmega non è un computer con un disco ed un sistema operativo che può caricare file a seconda delle necessità.
Fai finta che sia un minicomputer dotato solo di memoria Flash: su di essa devi scrivere tutto il programma in una volta sola ed in formato binario. Ecco perché si parte sempre dai file sorgenti, perché durante la compilazione per creare l'eseguibile finale il compilatore carica tutto quello che serve. Alle volte trovi dei file .hex, che sono i file binari pronti per essere flashati con un programmatore esterno Così però non sai cosa ci metti sopra, il bello dell'opensource è che tu hai pieno accesso al software, così che tu possa vedere come le cose vengono fatte ed intervenire per apportare modifiche.
Il compilatore che usa il IDE é quello ufficiale della Atmel il AVR-GCC. Il IDE lo chiama con i parametri neccesari qualdo compilo lo sketch. Vedi la documentazione della ATMEL
Grazie! mi documenterò su questo componente, ovviamente parlando di .lib intendo link statico, non dinamico, inteso come le dll di windows, non mi aspetto tanto e neanche mi interessava questo ;)
Si, è possibile ma devi lanciare il compilatore da linea di comando perchè non c'è supporto nell'IDE di Arduino.
L'estensione non è .lib ma .a, l'analogo delle .lib su Linux anche se si utilizza Windows.
Puoi trovare i precompilati forniti con l'ide in arduino-0022\hardware\tools\avr\lib.
Puoi provare a dare un'occhiata a http://www.visualmicro.com/ per vedere se con tale addin per Visual Studio è possibile "automatizzare" maggiormente la cosa.
Ciao lindbergh, se usi un sistema GNU/Linux puoi usare make e un makefile da te editato per ogni progetto.
Le librerie statiche sono archiviate con il comando avr-ar che genera un archivio .a contenente i moduli oggetto compilati dal compilatore.
Se senti la necessità di creare le tue funzioni di libreria puoi sfruttare il sistema offerta dall’ide per creare delle librerie in codice sorgente, molto comode perchè vengono compilate e linkate insieme al codice dello sketch con gli argomenti adatti quali F_CPU e -mmcu=micro_name che l’ide passa al compilatore in modo automatico.
Se la tua necessità è un’altra, ad esempio scrivere delle librerie senza usare quella di arduino allora devi provare ad usare eclipse oppure editare un makefile.
esempio di makefile:
Grazie a tutti per le dritte! volevo sapere se era possibile linkare in qualche modo librerie 'proprietarie' per dispositivi specifici, sarebbe stata una grave pecca se fosse mancata ;)
le librerie in c sono i file .h
i file .cpp e .h sono classi, immaginati una libreria che può contenere anche variabili dinamiche.
le librerie base di arduino le trovi nell'ide, cartella libraries, e non ti conviene toccarle finché non sai esattamente cosa fai.
nel playground esistono tantissime librerie, anzi di solito classi, per moltissimi componenti.
edit2: rileggendo meglio mi sono accorto che cerchi compilati. Non vengono forniti probabilmente per un motivo di portabilità e perché è tutto open-source. E direi che i tempi di compilazione sono più che accettabili anche su pc di bassa fascia