Introduction
The Build System section contains information on subjects such as the GCC Compiler and Build Environment.
GCC Compiler Flags
Compiler flags can be added or modified in both NBEclipse and command line makefiles.
Generic
Language | Mode | Flag | Description |
C/C++ | R, D | -gdwarf-2 | Adds dwarf-2 debug symbols to the binary. This makes it easier to resolve symbols in gdb. |
C/C++ | R, D | -Wall | Enables all warnings. |
C/C++ | R, D | -Werror=return-type | Treats warnings as errors for functions that are missing a return statement. |
C/C++ | R, D | -Wno-unused | Suppresses warnings for unused variables. |
C/C++ | R, D | -falign-functions=4 | Aligns functions to 4-byte boundaries for improved performance. |
C/C++ | R | -O2 | Enables level 2 optimization for improved performance. |
C/C++ | D | -O0 | Disables optimization for debugging. |
C/C++ | R, D | ‘-D'PLATFORM_NAME="$(PLATFORM_NAME)"’\ilinebr </td> <td class="markdownTableBodyNone"> Defines the PLATFORM_NAMEmacro with the value of the PLATFORM_NAMEenvironment variable. \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> C/C++ \ilinebr </td> <td class="markdownTableBodyNone"> R, D \ilinebr </td> <td class="markdownTableBodyNone"> \ilinebr </td> <td class="markdownTableBodyNone"> Includes the specified directories in the search path for header files. \ilinebr </td> </tr> <tr class="markdownTableRowEven"> <td class="markdownTableBodyNone"> C \ilinebr </td> <td class="markdownTableBodyNone"> R, D \ilinebr </td> <td class="markdownTableBodyNone"> -std=gnu17\ilinebr </td> <td class="markdownTableBodyNone"> Sets the C standard to GNU C17. \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> C \ilinebr </td> <td class="markdownTableBodyNone"> R, D \ilinebr </td> <td class="markdownTableBodyNone"> -ffunction-sections\ilinebr </td> <td class="markdownTableBodyNone"> Places each function in a separate section to enable linker optimizations. \ilinebr </td> </tr> <tr class="markdownTableRowEven"> <td class="markdownTableBodyNone"> C \ilinebr </td> <td class="markdownTableBodyNone"> R, D \ilinebr </td> <td class="markdownTableBodyNone"> -fdata-sections\ilinebr </td> <td class="markdownTableBodyNone"> Places each data object in a separate section to enable linker optimizations. \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> C++ \ilinebr </td> <td class="markdownTableBodyNone"> R, D \ilinebr </td> <td class="markdownTableBodyNone"> -std=gnu++17\ilinebr </td> <td class="markdownTableBodyNone"> Sets the C++ standard to GNU C++17. \ilinebr </td> </tr> <tr class="markdownTableRowEven"> <td class="markdownTableBodyNone"> C++ \ilinebr </td> <td class="markdownTableBodyNone"> R, D \ilinebr </td> <td class="markdownTableBodyNone"> -fno-rtti\ilinebr </td> <td class="markdownTableBodyNone"> Disables runtime type information (RTTI) for improved performance. \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> C++ \ilinebr </td> <td class="markdownTableBodyNone"> R, D \ilinebr </td> <td class="markdownTableBodyNone"> -fno-exceptions\ilinebr </td> <td class="markdownTableBodyNone"> Disables C++ exceptions for improved performance. \ilinebr </td> </tr> <tr class="markdownTableRowEven"> <td class="markdownTableBodyNone"> C++ \ilinebr </td> <td class="markdownTableBodyNone"> R, D \ilinebr </td> <td class="markdownTableBodyNone"> -Wno-register\ilinebr </td> <td class="markdownTableBodyNone"> Suppresses warnings for unused register variables. \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> C++ \ilinebr </td> <td class="markdownTableBodyNone"> R, D \ilinebr </td> <td class="markdownTableBodyNone"> -ffunction-sections\ilinebr </td> <td class="markdownTableBodyNone"> Places each function in a separate section to enable linker optimizations. \ilinebr </td> </tr> <tr class="markdownTableRowEven"> <td class="markdownTableBodyNone"> C++ \ilinebr </td> <td class="markdownTableBodyNone"> R, D \ilinebr </td> <td class="markdownTableBodyNone"> -fdata-sections\ilinebr </td> <td class="markdownTableBodyNone"> Places each data object in a separate section to enable linker optimizations. \ilinebr </td> </tr> <tr class="markdownTableRowOdd"> <td class="markdownTableBodyNone"> Assembler \ilinebr </td> <td class="markdownTableBodyNone"> R, D \ilinebr </td> <td class="markdownTableBodyNone"> ` | Specifies the CPU architecture flag. |
Architecture-Specific Compiler Flags
ARM Cortex-M7
Language | Mode | Flag | Description |
C/C++ | R, D | -fasynchronous-unwind-tables | Enables asynchronous unwind tables |
C/C++ | R, D | -D_C11_SOURCE | Defines the _C11_SOURCE macro. |
C/C++ | R, D | -DCORTEX_M7 | Defines the CORTEX_M7 macro. |
ARM Cortex-M0+
Language | Mode | Flag | Description |
C/C++ | R, D | -fasynchronous-unwind-tables | Enables asynchronous unwind tables |
C/C++ | D | -fomit-frame-pointer | Omit frame pointer for improved performance. |
C/C++ | R, D | -D_C11_SOURCE | Defines the _C11_SOURCE macro. |
C/C++ | R, D | -DCORTEX_M0PLUS | Defines the CORTEX_M0PLUS macro. |
ColdFire
Language | Mode | Flag | Description |
C/C++ | R, D | -fno-omit-frame-pointer | Do not omit frame pointer for improved debugging. |
C/C++ | R, D | -fasynchronous-unwind-tables | Enables asynchronous unwind tables |
C/C++ | R, D | -DCOLDFIRE | Defines the COLDFIRE macro. |
Assembler | D | --defsym _DEBUG=1 | Defines the _DEBUG symbol. |
CPU-Specific Compiler Flags
SAME70
Language | Mode | Flag | Description |
C/C++ | R, D | -mcpu=cortex-m7 | Specifies the CPU architecture. |
C/C++ | R, D | -mthumb | Specifies the Thumb instruction set. |
C/C++ | R, D | -mfpu=fpv5-d16 | Specifies the floating-point unit. |
C/C++ | R, D | -mfloat-abi=$(ABI_OPT) | Specifies the floating-point ABI. Defaults to softfp |
C/C++ | R, D | -D$(CPU) | Defines the $(CPU) macro. |
C++ | R, D | -fno-use-cxa-atexit | Disables the use of __cxa_atexit |
C++ | R, D | -falign-fuinctions=4 | Aligns functions to 4-byte boundaries for improved performance. |
MIMXRT11xx, MIMXRT10xx
Language | Mode | Flag | Description |
C/C++ | R, D | -mcpu=cortex-m7 | Specifies the CPU architecture. |
C/C++ | R, D | -mthumb | Specifies the Thumb instruction set. |
C/C++ | R, D | -mfpu=fpv5-d16 | Specifies the floating-point unit. |
C/C++ | R, D | -mfloat-abi=$(ABI_OPT) | Specifies the floating-point ABI. Defaults to softfp |
C/C++ | R, D | -D$(CPU) | Defines the $(CPU) macro. |
C++ | R, D | -fno-use-cxa-atexit | Disables the use of __cxa_atexit |
C++ | R, D | -falign-fuinctions=8 | Aligns functions to 8-byte boundaries for improved performance. |
SAMD20
Language | Mode | Flag | Description |
C/C++ | R, D | -mcpu=cortex-m0plus | Specifies the CPU architecture. |
C/C++ | R, D | -mthumb | Specifies the Thumb instruction set. |
C++ | R | -fno-use-cxa-atexit | Disables the use of __cxa_atexit |
C++ | R | -falign-fuinctions=4 | Aligns functions to 4-byte boundaries for improved performance. |
MCF5441X
Language | Mode | Flag | Description |
C/C++ | R, D | -D$(CPU) | Defines the $(CPU) macro. |
C/C++ | R, D | -mcpu=54415 | Specifies the CPU architecture. |
Platform-Specific Compiler Flags
MODM7AE70
Language | Mode | Flag | Description |
C/C++ | R, D | -D__SAME70Q21__ | Defines the __SAME70Q21__ macro. |
C/C++ | R, D | -DMODM7AE70 | Defines the MODM7AE70 macro. |
SBE70LC
Language | Mode | Flag | Description |
C/C++ | R, D | -D__SAME70Q21__ | Defines the __SAME70Q21__ macro. |
C/C++ | R, D | -DSBE70LC | Defines the SBE70LC macro. |
SOMRT1061
Language | Mode | Flag | Description |
C/C++ | R, D | -D__MIMXRT106xx__ | Defines the __MIMXRT106xx__ macro. |
C/C++ | R, D | -D__MIMXRT1061__ | Defines the __MIMXRT1061__ macro. |
C/C++ | R, D | -DSOMRT1061 | Defines the SOMRT1061 macro. |
MOD5441X
Language | Mode | Flag | Description |
C/C++ | R, D | -DMOD5441X | Defines the MOD5441X macro. |
NANO54415
Language | Mode | Flag | Description |
C/C++ | R, D | -DNANO54415 | Defines the NANO54415 macro. |
SB800EX
Language | Mode | Flag | Description |
C/C++ | R, D | -DSB800EX | Defines the SB800EX macro. |
Linker Flags
Generic
Flag | Description |
$(CPUFLAG) | Specifies the CPU architecture flag. |
-Wl,-n | Disables linking to dyn |
-T$(NNDK_ROOT)/platform/$(PLATFORM)/lib/$(PLATFORM).ld | Specifies the linker script. |
-Wl,-R$(NNDK_ROOT)/platform/$(PLATFORM)/lib/sys.ld | Specifies the linker script. |
-Wl,-Map=$(@:.elf=.map) | Generates a map file. |
-Wl,--cref | Generates a cross-reference table. |
-Wl,--gc-sections | Removes unused sections to reduce the size of the binary. |
-Wl,--start-group,$(NBLIBS) $(XTRALIB) -lstdc++ -lc -Wl,--end-group | Specifies the libraries to link. |
Architecture-Specific Linker Flags
None
CPU-Specific Linker Flags
SAME70
Flag | Description |
-nostartfiles | Disables linking to the default startup files. |
-mfloat-abi=$(ABI_OPT) | Specifies the floating-point ABI. Defaults to softfp |
-Wl--thumb-entry=Reset_Handler | Specifies the entry point. |
-Wl--thumb-entry=_start_ | Specifies the entry point. (SOMRT1061) |
MIMXRT11xx, MIMXRT10xx
Flag | Description |
-nostartfiles | Disables linking to the default startup files. |
-mfloat-abi=$(ABI_OPT) | Specifies the floating-point ABI. Defaults to softfp |
-Wl--thumb-entry=Reset_Handler | Specifies the entry point. |
SAMD20
Flag | Description |
-nostartfiles | Disables linking to the default startup files. |
-Wl--thumb-entry=Reset_Handler | Specifies the entry point. |
MCF5441X
None
Platform-Specific Linker Flags
None
Pack Binary
Generic
None
Architecture-Specific
None
CPU-Specific
MCF5441X
Executable | I/O | Flag | Description |
m68k-elf-objcopy | .elf -> .s19 | -O srec | Converts the elf file to s19 |
m68k-elf-objcopy | .elf -> .s19 | -Wl,--gc-sections | Removes unused sections to reduce the size of the binary. |
m68k-elf-objcopy | .elf -> .s19 | --strip-all | Removes all symbols from the binary. |
compcode | .s19 -> _APP.s19 | -M $(^:.s19=.map) | Specifies the map file. |
compcode | .s19 -> _APP.s19 | -R | Print report. |
compcode | .s19 -> _APP.s19 | -P$(PLATFORM) | Specifies the platform. |
compcode | .s19 -> .bin | -O binary | Converts the s19 file to binary |
compcode | .s19 -> .bin | -M $(^:.s19=.map) | Specifies the map file. |
compcode | .s19 -> .bin | -B | Specifies binary output. |
compcode | .s19 -> .bin | -P$(PLATFORM) | Specifies the platform. |
compcode | .s19 -> .bin | -R | Print report. |
SAMD20
Executable | I/O | Flag | Description |
nbfspack | .elf -> .bin | -output-target bin | Converts the elf file to binary |
SAME70
Executable | I/O | Flag | Description |
arm-none-eabi-size | .elf -> .bin | | Displays the size of the binary. |
nbfspack | .elf -> .bin | -output-target bin | Converts the elf file to binary |
nbfspack | .elf -> .bin | -S | Show build statistics. |
nbfspack | .elf -> .bin | -P $(PLATFORM) | Specifies the platform. |
MIMXRT11xx, MIMXRT10xx
Executable | I/O | Flag | Description |
nbfspack | .elf -> .bin | -output-target bin | Converts the elf file to binary |
Platform-Specific
MODM7AE70
Executable | I/O | Flag | Description |
nbfspack | .elf -> .bin | -C | Compress program sections |
nbfspack | .elf -> .bin | -cflag S:3 | . |
nbfspack | .elf -> .bin | -cflag S:0 | . |
nbfspack | .elf -> .bin | -cflag S:1 | . |
SBE70LC
Executable | I/O | Flag | Description |
nbfspack | .elf -> .bin | -C | Compress program sections |
nbfspack | .elf -> .bin | -cflag S:3 | . |
nbfspack | .elf -> .bin | -cflag S:0 | . |
nbfspack | .elf -> .bin | -cflag S:1 | . |
SOMRT1061
None
MOD5441X
Executable | I/O | Flag | Description |
compcode | .s19 -> .bin | 0xC0040000 0xC1FC0000 | Application address range. |
NANO54415
Executable | I/O | Flag | Description |
compcode | .s19 -> .bin | 0x04000 0x800000 | Application address range. |
SB800EX
Executable | I/O | Flag | Description |
compcode | .s19 -> .bin | 0x04000 0x800000 | Application address range. |