I downloaded the latest Linaro toolchain (https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/) to cross-compile C++ code for different Raspberry Pis which running a Raspbian Buster. For testing I used a simple hello world code. If I compile this using
<path to toolchain>/arm-linux-gnueabihf-g++ main.cpp -o helloworld
the programme runs fine on Raspberry Pi II as well as on Raspberry Pi III models but on Raspberry Pi I it throws a
Segmentation fault
For some other code (Qt) the execution fails with
Illegal instruction
If I compile the same code directly on the Raspberry Pi I, it works fine.
So far I understood is this due to that the toolchain compiles for arm7 by default. I tried to force arm6 compatibility using
<path to toolchain>/arm-linux-gnueabihf-g++ main.cpp -o helloworld -marm
But this makes no difference. Further I tried
<path to toolchain>/arm-linux-gnueabihf-g++ main.cpp -o helloworld march=armv6z -mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard
however, this results in compiler errors:
In file included from /home/development/linaro/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/arm-linux-gnueabihf/include/c++/7.4.1/exception:38:0,
from /home/development/linaro/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/arm-linux-gnueabihf/include/c++/7.4.1/ios:39,
from /home/development/linaro/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/arm-linux-gnueabihf/include/c++/7.4.1/ostream:38,
from /home/development/linaro/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/arm-linux-gnueabihf/include/c++/7.4.1/iostream:39,
from main.cpp:2:
/home/development/linaro/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/arm-linux-gnueabihf/include/c++/7.4.1/bits/exception.h: In Konstruktor »std::exception::exception()«:
/home/development/linaro/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/arm-linux-gnueabihf/include/c++/7.4.1/bits/exception.h:63:39: nicht implementiert: Thumb-1 Hardware-Gleitkomma VFP ABI
exception() _GLIBCXX_USE_NOEXCEPT { }
where "nicht implementiert: Thumb-1 Hardware-Gleitkomma" means "not implemented: Thumb-1 Hardware floating point".
Does anybody has an idea, how to use the toolchain to compile for armv6, i.e. Raspberry Pi I?