I was told to install the latest pre-build (x86_64 to ARM) "https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2020q4/gcc-arm-none-eabi-10-2020-q4-major-x86_64-linux.tar.bz2?revision=ca0cbf9c-9de2-491c-ac48-898b5bbc0443&la=en&hash=68760A8AE66026BCF99F05AC017A6A50C6FD832A", I renamed the file to remove everything following the "...tar.bz2". Once installed, I tried running a "hello world" test which fails with several errors.
I hope the "-v" switch is helpful.
I fully admit to only have used compilers installed by a sysadmin. I have tried googling and reading about everything I could about installing and using the pre-built compiler but I'm just not getting it. Since everybody has a first time for whatever task they're doing, I'd appreciate any help. I'm very willing to do my research, so whatever help, info or pointers to help, is appreciated.
I do know that using both -mcpu=cortex-m0plus and -march=armv6 causes a switch conflict so I just told it what the cpu was and let it pick the architecture.
Regarding the test run, I do not know how to get the includes right, and what is left looks to be link errors. I don't know how to fix that either.
----------
ssh'ing to x86-64 machine running ububtu 20.04, default gcc is 9.3.0.
Installing gcc 10.2.1 which should be a cross-compiler to an ARM Cortex-m0+.
alias gccm=..blah../gcc-10.2.1_m0/gcc-arm-none-eabi/bin/arm-none-eabi-gcc -mcpu=cortex-m0plus'
Running test
$ gccm -v scott/gccsrc/hello.cUsing built-in specs.COLLECT_GCC=/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/arm-none-eabi-gccCOLLECT_LTO_WRAPPER=/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/lto-wrapperTarget: arm-none-eabiConfigured with: /mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/src/gcc/configure --target=arm-none-eabi --prefix=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/install-native --libexecdir=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/install-native/lib --infodir=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/install-native/share/doc/gcc-arm-none-eabi/info --mandir=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/install-native/share/doc/gcc-arm-none-eabi/man --htmldir=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/install-native/share/doc/gcc-arm-none-eabi/html --pdfdir=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/install-native/share/doc/gcc-arm-none-eabi/pdf --enable-languages=c,c++ --enable-plugins --disable-decimal-float --disable-libffi --disable-libgomp --disable-libmudflap --disable-libquadmath --disable-libssp --disable-libstdcxx-pch --disable-nls --disable-shared --disable-threads --disable-tls --with-gnu-as --with-gnu-ld --with-newlib --with-headers=yes --with-python-dir=share/gcc-arm-none-eabi --with-sysroot=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/install-native/arm-none-eabi --build=x86_64-linux-gnu --host=x86_64-linux-gnu --with-gmp=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/build-native/host-libs/usr --with-mpfr=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/build-native/host-libs/usr --with-mpc=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/build-native/host-libs/usr --with-isl=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/build-native/host-libs/usr --with-libelf=/mnt/workspace/workspace/GCC-10-pipeline/jenkins-GCC-10-pipeline-48_20201124_1606180641/build-native/host-libs/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-pkgversion='GNU Arm Embedded Toolchain 10-2020-q4-major' --with-multilib-list=rmprofile,aprofileThread model: singleSupported LTO compression algorithms: zlibgcc version 10.2.1 20201103 (release) (GNU Arm Embedded Toolchain 10-2020-q4-major)COLLECT_GCC_OPTIONS='-mcpu=cortex-m0plus' '-v' '-mfloat-abi=soft' '-mthumb' '-march=armv6s-m' /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/cc1 -quiet -v -imultilib thumb/v6-m/nofp -iprefix /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/ -isysroot /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../arm-none-eabi -D__USES_INITFINI__ scott/gccsrc/hello.c -quiet -dumpbase hello.c -mcpu=cortex-m0plus -mfloat-abi=soft -mthumb -march=armv6s-m -auxbase hello -version -o /tmp/ccWn3kSy.sGNU C17 (GNU Arm Embedded Toolchain 10-2020-q4-major) version 10.2.1 20201103 (release) (arm-none-eabi) compiled by GNU C version 4.8.4, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMPGGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072ignoring duplicate directory "/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/10.2.1/include"ignoring nonexistent directory "/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../arm-none-eabi/usr/local/include"ignoring duplicate directory "/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/10.2.1/include-fixed"ignoring duplicate directory "/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/../../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/include"ignoring nonexistent directory "/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../arm-none-eabi/usr/include"#include "..." search starts here:#include <...> search starts here: /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/include /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/include-fixed /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/includeEnd of search list.GNU C17 (GNU Arm Embedded Toolchain 10-2020-q4-major) version 10.2.1 20201103 (release) (arm-none-eabi) compiled by GNU C version 4.8.4, GMP version 6.1.0, MPFR version 3.1.4, MPC version 1.0.3, isl version isl-0.18-GMPGGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072Compiler executable checksum: e9addb35ad3a920a846c18a834db924dCOLLECT_GCC_OPTIONS='-mcpu=cortex-m0plus' '-v' '-mfloat-abi=soft' '-mthumb' '-march=armv6s-m' /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/as -v -march=armv6s-m -mfloat-abi=soft -meabi=5 -o /tmp/ccizQoAu.o /tmp/ccWn3kSy.sGNU assembler version 2.35.1 (arm-none-eabi) using BFD version (GNU Arm Embedded Toolchain 10-2020-q4-major) 2.35.1.20201028COMPILER_PATH=/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/:/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/:/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/LIBRARY_PATH=/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/thumb/v6-m/nofp/:/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/:/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../arm-none-eabi/lib/thumb/v6-m/nofp/:/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/:/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/:/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/:/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../arm-none-eabi/lib/COLLECT_GCC_OPTIONS='-mcpu=cortex-m0plus' '-v' '-mfloat-abi=soft' '-mthumb' '-march=armv6s-m' /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/collect2 -plugin /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/liblto_plugin.so -plugin-opt=/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/lto-wrapper -plugin-opt=-fresolution=/tmp/ccuzQXjx.res -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lc --sysroot=/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../arm-none-eabi -X /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/thumb/v6-m/nofp/crti.o /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/thumb/v6-m/nofp/crtbegin.o /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/crt0.o -L/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/thumb/v6-m/nofp -L/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp -L/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../arm-none-eabi/lib/thumb/v6-m/nofp -L/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1 -L/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc -L/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib -L/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../arm-none-eabi/lib /tmp/ccizQoAu.o --start-group -lgcc -lc --end-group /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/thumb/v6-m/nofp/crtend.o /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/thumb/v6-m/nofp/crtn.o/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a(lib_a-exit.o): in function `exit':exit.c:(.text.exit+0x18): undefined reference to `_exit'/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a(lib_a-sbrkr.o): in function `_sbrk_r':sbrkr.c:(.text._sbrk_r+0xc): undefined reference to `_sbrk'/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a(lib_a-writer.o): in function `_write_r':writer.c:(.text._write_r+0x10): undefined reference to `_write'/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a(lib_a-closer.o): in function `_close_r':closer.c:(.text._close_r+0xc): undefined reference to `_close'/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a(lib_a-lseekr.o): in function `_lseek_r':lseekr.c:(.text._lseek_r+0x10): undefined reference to `_lseek'/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a(lib_a-readr.o): in function `_read_r':readr.c:(.text._read_r+0x10): undefined reference to `_read'/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a(lib_a-fstatr.o): in function `_fstat_r':fstatr.c:(.text._fstat_r+0xe): undefined reference to `_fstat'/subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/bin/ld: /subo/Tooling/src/team-sweng/cross-compile/cortexm0/gcc-10.2.1_m0/gcc-arm-none-eabi/bin/../lib/gcc/arm-none-eabi/10.2.1/../../../../arm-none-eabi/lib/thumb/v6-m/nofp/libc.a(lib_a-isattyr.o): in function `_isatty_r':isattyr.c:(.text._isatty_r+0xc): undefined reference to `_isatty'collect2: error: ld returned 1 exit statuslocaluser@buildbox:~$
Hey Andy,
My boss told me to use that link. It is directly from here: https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm, which is where ARM keeps its cross-compilers. That web page says that it supports the cortex_m0+. Perhaps I'm reading too much into the web page, but I believed the package to contain everything (gcc, binutils, newlib). I do not know for sure if the runtime is there, but isn't that what the linker brings in?
As I said, I am very inexperienced with compiler packages at this level and I'm expecting to learn. I appreciate your questions. They, at least, show what I don't know...
I think it's time to go back to your boss and say that you've done what (s)he said, and now need some help with the next step.
It looks like you have successfully installed the toolchain - the issue is with your project setup.
smblackledge said:but isn't that what the linker brings in?
but isn't that what the linker brings in?
The thing with small embedded systems is that they can be very resource constrained - so you need to be careful with what resources you use.
In support of that, there are a number of runtimes available "tuned" to different requirements - so you need to pick the right one for your particular application.
As we know nothing about your project, we don't know what you require - but your boss should know, so (s)he is the best placed to help you (or point you to the best person in your company).
Is there a particular reason you're doing this all at the "nuts & bolts" level - rather than using an IDE ?