====== General ====== ====== GCC ====== [[https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/|Online documentation]] Good options [[https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/Invoking-GCC.html#Invoking-GCC|Command line options]], [[https://gcc.gnu.org/onlinedocs/gcc-9.3.0/gcc/ARM-Options.html#ARM-Options|Arm options]] * -march=armv6-m * -mtune=cortex-m0plus * -mcpu=cortex-m0plus * -mlong-calls * -mthumb * -mno-unaligned-access * To find unused functions: ''%%-ffunction-sections -fdata-sections -Wl,--gc-sections,--print-gc-sections%%'' Passing linker options through gcc with -Wl,\\ ''gcc -Wl,-Tlinkerscript.ld'' Passing assembler options through gcc with -Wa,\\ ''gcc -Wa,-ag'' ^ Argument ^ Description ^ Example ^ | ''-c'' | Stop after assembly | ''# gcc main.c -c -o main.o '' | | ''-S'' | Stop after compile before assembly | ''# gcc main.c -S -o main.s '' | | ''-E'' | Stop after preprocessor | ''# gcc main.c -E -o main.pp '' | | ''-M'' | Generate file suitable for Make | ''# gcc main.c -M -o main.mk '' | ====== Binutils ====== [[https://sourceware.org/binutils/docs-2.34/binutils/index.html|Online documentation]] ===== ld -- Linker ===== [[https://sourceware.org/binutils/docs-2.34/ld/index.html|Online documentation]] [[https://www.silabs.com/community/mcu/32-bit/knowledge-base.entry.html/2018/12/06/understand_the_gnul-PTm6|Understand the linker script]] -- Human readable guide to linker scripts ===== as -- Assembler ===== [[https://sourceware.org/binutils/docs-2.34/as/index.html|Online documentation]] Good options [[https://sourceware.org/binutils/docs-2.34/as/ARM-Options.html#ARM-Options|Arm-options]] * -mcpu=cortex-m0plus * -march=armv6-m * -mthumb ===== nm -- List symbols ===== [[https://sourceware.org/binutils/docs-2.34/binutils/nm.html#nm|Online documentation]] ===== objcopy -- Copy and/or transform object files ===== [[https://sourceware.org/binutils/docs-2.34/binutils/objcopy.html#objcopy|Online documentation]] ===== objdump -- Investigate object files ===== [[https://sourceware.org/binutils/docs-2.34/binutils/objdump.html#objdump|Online documentation]]