但在ubuntu中使用静态编译arm-linux-gnueabihf-gcc hello.c -static hello 后,在开发板上可以运行./hello
猜测原因:ubuntu安装的交叉编译器版本过高
解决办法:卸载当前版本重新安装低版本
1.先arm-linux-gnueabihf-gcc -v 查看目前使用的gcc版本;
2.如果不是4.9.4。找到目前版本的位置which arm-linux-gnueabihf-gcc-版本号;
3.卸载当前版本rm -rf arm-linux-gnueabihf-gcc*;
4.重新下载4.9.4版本(参考正点原子Linux驱动开发:4.3.1 交叉编译器安装)
PS:
1.查看gcc版本命令gcc --version 和 arm-linux-gnueabihf-gcc -v 是不同的;两个命令的不同点在于gcc --version
用于查看当前系统中默认GCC版本的信息,而arm-linux-gnueabihf-gcc -v
用于查看针对ARM架构的交叉编译环境下的GCC版本信息,一般使用后者
2.编译时出现/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/../lib/gcc/arm-linux-gnueabihf/4.9.4/../../../../arm-linux-gnueabihf/bin/ld: cannot open output file hello:权限不够。解决办法参考-->/usr/bin/ld: cannot open output file a.out: Permission deniedcollect2: error: ld returned 1 exit st_/usr/bin/ld: cannot open output file hello: permis-CSDN博客