@lesto
List baseCommandLinker = new ArrayList(Arrays.asList(new String[] {
avrBasePath + "avr-gcc",
"-Os",
"-Wl,--gc-sections"+optRelax,
"-mmcu=" + boardPreferences.get("build.mcu"),
"-o",
buildPath + File.separator + primaryClassName + ".elf"
}));
for (File file : objectFiles) {
baseCommandLinker.add(file.getAbsolutePath());
}
baseCommandLinker.add(runtimeLibraryName);
baseCommandLinker.add("-L" + buildPath);
baseCommandLinker.add("-lm");
Questo dovrebbe essere il codice per il linker, dove si vede che alla fine viene aggiunto -lm per la libreria math che deve essere sempre presente. L'ideale sarebbe che il campo editabile permetta di fare questo:
-(Os) + (O2). Il significato è: rimuovo il flag Os e aggiungo O2, ma è troppo complicato, rendiamolo semplice.
Per cui una edit line con un buddy button così: Optimize flags: -Os [reset default flags]
dove [text] è un pulsante, cliccandoci il campo edit viene impostato a 0s.
Il codice dovrebbe diventare così:
List baseCommandLinker = new ArrayList(Arrays.asList(new String[] {
avrBasePath + "avr-gcc",
optimizeFlags, // oppure Preference.get("compiler.optFlags)
"-Wl,--gc-sections"+optRelax,
"-mmcu=" + boardPreferences.get("build.mcu"),
"-o",
buildPath + File.separator + primaryClassName + ".elf"
}));
for (File file : objectFiles) {
baseCommandLinker.add(file.getAbsolutePath());
}
baseCommandLinker.add(runtimeLibraryName);
baseCommandLinker.add("-L" + buildPath);
baseCommandLinker.add("-lm");
A scelta se usare una line edit o più check box exclusive dove solo una check box può essere marcata.
Le ottimizzazione di gcc sono:
-O0, -O1, -O2, -O3, -Os.
@nid69ita
strlen non funziona, ma c'è una funzione specifica, ma non ricordo pgm_strlen o simile.
Che poi pgm_strlen conta i caratteri fino ad arrivare a NULL e quindi non è molto rapida come la strlen.
Ciao.