WhyCan Forum

人过留名,雁过留声,感谢各位朋友不离不弃地支持。 QQ: 516333132, 微信: whycan_cn (哇酷网/挖坑网/填坑网) admin@whycan.cn

您尚未登录。

#1 2019-11-21 12:17:57

zhouyu2019
会员
注册时间: 2019-11-07
累计积分: 15

荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

刚入手了一块荔枝派Nano的板子,按照官方的教程好不容易把系统跑起来了,写一个最简单的程序"Hello word!",放到板子上一运行就"segmentation fault",完全不知道什么情况,即使烧官方搭建好的系统也一样,百度了好久都找不到答案,后来通过file命令查看该可执行文件得到:
print_test: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=db8e6e41226ba13dc89fc5ebeaf8e8fa0a8ac0cd, with debug_info, not stripped

然后我就尝试file根文件系统下的busybox,得到:
busybox: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 2.6.16, stripped

于是猜测是编译器版本的问题,编译应用程序的时候使用的编译工具应该是要和根文件系统的交叉编译工具一致才行,可我完全是按照官方教程做的呀,如果存在这么大的问题,为什么官方完全没有提及呢?

离线

#2 2019-11-21 12:51:45

飞翔工控
会员
注册时间: 2019-11-21
累计积分: 13

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

链接的时候加 -static 命令, 静态链接解君愁.

离线

#3 2019-11-21 13:35:29

zhouyu2019
会员
注册时间: 2019-11-07
累计积分: 15

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

飞翔工控 说:

链接的时候加 -static 命令, 静态链接解君愁.

静态编译也不行,运行后没有输出segmentation fault,变成Illegal instruction了

最近编辑记录 zhouyu2019 (2019-11-21 13:36:32)

离线

#4 2019-11-21 13:39:09

天马行空
会员
注册时间: 2019-11-12
累计积分: 29

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

你用的是哪个gcc工具链?

离线

#5 2019-11-21 13:50:26

zhouyu2019
会员
注册时间: 2019-11-07
累计积分: 15

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

天马行空 说:

你用的是哪个gcc工具链?

我自己编译的系统:内核和应用程序都是用gcc-linaro-7.2.1编译,根文件系统没去配置工具链,直接用的官方的.config文件,工具链是它自己安装的,编译完能看到使用的工具链版本是7.3的。

官方的系统:内核用gcc-linaro-7.2.1编译,根文件系统和应用程序用什么版本的我不知道,反正我用gcc-linaro-7.2.1编译的应用程序在官方系统上也是一样不能用。

离线

#6 2019-11-21 14:00:48

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

gcc-linaro-7.2.1 下载的完整链接发一下,我看看问题在哪里

在线

#7 2019-11-21 14:06:03

zhouyu2019
会员
注册时间: 2019-11-07
累计积分: 15

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

晕哥 说:

gcc-linaro-7.2.1 下载的完整链接发一下,我看看问题在哪里

谢谢晕哥!这是工具链下载的完整链接: http://releases.linaro.org/components/toolchain/binaries/7.2-2017.11/arm-linux-gnueabi/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi.tar.xz

离线

#8 2019-11-21 14:15:18

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

root@whycan.cn:/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin# ./arm-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=./arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabi/bin/../libexec/gcc/arm-linux-gnueabi/7.2.1/lto-wrapper
Target: arm-linux-gnueabi
Configured with: '/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-linux-gnueabi/snapshots/gcc.git~linaro-7.2-2017.11/configure' SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-shared --without-included-gettext --enable-nls --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --disable-multilib --with-float=soft --with-mode=thumb --with-tune=cortex-a9 --with-arch=armv7-a --enable-threads=posix --enable-multiarch --enable-libstdcxx-time=yes --enable-gnu-indirect-function --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-linux-gnueabi/_build/sysroots/arm-linux-gnueabi --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabi/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,fortran,lto --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabi --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-linux-gnueabi/_build/builds/destdir/x86_64-unknown-linux-gnu
Thread model: posix
gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)

工具链有问题,编译u-boot和内核或许可以。

以前有网友遇到过了。

看到粗体字了吗?这个gcc不适合arm9的 f1c100s.

在线

#9 2019-11-21 14:27:10

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

arm-linux-gnueabi-gcc --with-arch=armv4 --static

编译的时候, 加上这个指令试一试。

或者:

arm-linux-gnueabi-gcc --with-arch=armv5te --static

在线

#10 2019-11-21 14:36:21

zhouyu2019
会员
注册时间: 2019-11-07
累计积分: 15

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

这样啊,那就有点坑了,官方教程在编译uboot的时候让下载这个工具链,后面的内容也没说要用其它工具链来编译。
晕哥,那我到底应该用哪个工具链来编译呢?buildroot里面的那个工具链我试了确实就没问题了,但它又只有arm-linux-gcc,没有arm-linux-g++,不知道什么原因,好纠结。

离线

#11 2019-11-21 14:37:28

zhouyu2019
会员
注册时间: 2019-11-07
累计积分: 15

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

好的,我试一下

晕哥 说:

arm-linux-gnueabi-gcc --with-arch=armv4 --static

编译的时候, 加上这个指令试一试。

或者:

arm-linux-gnueabi-gcc --with-arch=armv5te --static

离线

#12 2019-11-21 14:38:31

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

建议用: arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

https://sourcery.mentor.com/GNUToolchain/package12813/public/arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

http://sources.buildroot.net/toolchain-external-codesourcery-arm/arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2


这个绝对可以的, 经过实战检验的:

whycan@ubuntu:/opt/arm-2014.05/bin$ ./arm-none-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=./arm-none-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/opt/arm-2014.05/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=29' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2014.05-29' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --enable-libatomic --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin SED=sed
Thread model: posix
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)
whycan@ubuntu:/opt/arm-2014.05/bin$

在线

#13 2019-11-21 14:51:10

zhouyu2019
会员
注册时间: 2019-11-07
累计积分: 15

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

谢谢晕哥,加了“-with-arch=armv4”或者“-with-arch=armv5te”都不行,提示没有这个选项,改成“-march=armv5te”倒是可以,但编译出来的可执行文件也运行不起来。
你发的这个工具链,是编译uboot、内核、根文件系统、应用程序都用这一个对吗?

离线

#14 2019-11-21 15:02:11

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

对, 可以都用这个。

在线

#15 2019-11-21 15:35:03

kekemuyu
会员
注册时间: 2018-12-13
累计积分: 350

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

还可以直接在nano上直接使用gcc,不存在以上环境问题

离线

#16 2019-11-21 15:51:39

zhouyu2019
会员
注册时间: 2019-11-07
累计积分: 15

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

kekemuyu 说:

还可以直接在nano上直接使用gcc,不存在以上环境问题

这么厉害,还能在板子上编译程序,不过感觉不是很实用,哈哈。

离线

#17 2019-11-21 15:58:23

kekemuyu
会员
注册时间: 2018-12-13
累计积分: 350

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

zhouyu2019 说:

这么厉害,还能在板子上编译程序,不过感觉不是很实用,哈哈。

跑了debian,和使用ubuntu主机无差别

离线

#18 2019-11-22 15:12:41

aaayao
会员
注册时间: 2019-10-30
累计积分: 72

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

晕哥 说:

建议用: arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

https://sourcery.mentor.com/GNUToolchain/package12813/public/arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2

http://sources.buildroot.net/toolchain-external-codesourcery-arm/arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2


这个绝对可以的, 经过实战检验的:

whycan@ubuntu:/opt/arm-2014.05/bin$ ./arm-none-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=./arm-none-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/opt/arm-2014.05/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=29' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2014.05-29' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --enable-libatomic --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin SED=sed
Thread model: posix
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)
whycan@ubuntu:/opt/arm-2014.05/bin$

晕哥,你好:
               用了这个工具琏,编译完内核启动不了啊,原来gcc-linaro-7.2.1这个编译是能正常启动的,这个是什么原因呢?
QQ图片20191122150900.png

离线

#19 2019-11-22 15:14:18

aaayao
会员
注册时间: 2019-10-30
累计积分: 72

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

工具琏显示是这样的

ubuntu@VM-0-16-ubuntu:~/f1c100s$ arm-none-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/opt/arm-2014.05/bin/../libexec/gcc/arm-none-linux-gnueabi/4   .8.3/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/confi   gure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-   gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdc   xx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --wit   h-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-   tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__   =2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=29' --enable-languages   =c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit -   -with-pkgversion='Sourcery CodeBench Lite 2014.05-29' --with-bugurl=https://sour   cery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sy   sroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratc   h/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/l   ibc --with-gmp=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none   -linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-li   nux-gnu/usr --with-mpfr=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29   -arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i   686-pc-linux-gnu/usr --with-mpc=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-20   14.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/hos   t-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/maciej/arm-linux-2014.05-rel/ob   j/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.ex   tras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/maciej/arm-linux-2014   .05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-   gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libit   m --enable-libatomic --disable-libssp --enable-poison-system-directories --with-   build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/   arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maciej/arm-linux-201   4.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin SED=sed
Thread model: posix
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)
ubuntu@VM-0-16-ubuntu:~/f1c100s$

离线

#20 2019-11-22 15:16:52

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

这个问题基本上 zImage不完整,或者 dtb文件错误。

在线

#21 2019-11-23 09:36:51

aaayao
会员
注册时间: 2019-10-30
累计积分: 72

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

编译u-boot又出问题了,是不是这个编译工具太老了?

ubuntu@VM-0-16-ubuntu:~/f1c100s/u-boot$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -j4
*** Your GCC is older than 6.0 and is not supported
make: *** [checkgcc6] Error 1
make: INTERNAL: Exiting with 5 jobserver tokens available; should be 4!

离线

#22 2019-11-23 09:37:33

aaayao
会员
注册时间: 2019-10-30
累计积分: 72

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

晕哥 说:

这个问题基本上 zImage不完整,或者 dtb文件错误。

我现在又全部再试一次,看看那里出问题了

离线

#23 2019-11-23 10:33:12

异乡是故乡
会员
注册时间: 2019-11-15
累计积分: 14

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

aaayao 说:

编译u-boot又出问题了,是不是这个编译工具太老了?

ubuntu@VM-0-16-ubuntu:~/f1c100s/u-boot$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -j4
*** Your GCC is older than 6.0 and is not supported
make: *** [checkgcc6] Error 1
make: INTERNAL: Exiting with 5 jobserver tokens available; should be 4!

对,要用 gcc 7.x

离线

#24 2019-11-23 17:14:11

aaayao
会员
注册时间: 2019-10-30
累计积分: 72

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

用了 gcc 7.x 还是不行啊,这U-BOOT编译看来只能用gcc-linaro-7.2.1


ubuntu@VM-0-16-ubuntu:~/f1c100s/u-boot$ arm-none-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=arm-none-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/opt/arm-2014.05/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /scratch/maciej/arm-linux-2014.05-rel/src/gcc-4.8-2014.05/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2014 -D__CS_SOURCERYGXX_MIN__=5 -D__CS_SOURCERYGXX_REV__=29' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery CodeBench Lite 2014.05-29' --with-bugurl=https://sourcery.mentor.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/libc --with-gmp=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpfr=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-mpc=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-isl=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --with-cloog=/scratch/maciej/arm-linux-2014.05-rel/obj/pkg-2014.05-29-arm-none-linux-gnueabi/arm-2014.05-29-arm-none-linux-gnueabi.extras/host-libs-i686-pc-linux-gnu/usr --disable-libgomp --disable-libitm --enable-libatomic --disable-libssp --enable-poison-system-directories --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/maciej/arm-linux-2014.05-rel/install/opt/codesourcery/arm-none-linux-gnueabi/bin SED=sed
Thread model: posix
gcc version 4.8.3 20140320 (prerelease) (Sourcery CodeBench Lite 2014.05-29)
ubuntu@VM-0-16-ubuntu:~/f1c100s/u-boot$ gcc --version
gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

ubuntu@VM-0-16-ubuntu:~/f1c100s/u-boot$ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- -j4
*** Your GCC is older than 6.0 and is not supported
arch/arm/config.mk:69: recipe for target 'checkgcc6' failed
make: *** [checkgcc6] Error 1
ubuntu@VM-0-16-ubuntu:~/f1c100s/u-boot$

离线

#25 2019-11-23 17:40:15

jimmy
Moderator
注册时间: 2017-10-29
累计积分: 290

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

7.x 可以编译新 u-boot的啊

离线

#26 2019-11-25 09:17:39

aaayao
会员
注册时间: 2019-10-30
累计积分: 72

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

我编译的是u-boot-nano-lcd800480,不行呢?不知道为什么了?

jimmy 说:

7.x 可以编译新 u-boot的啊

离线

#27 2019-11-25 09:19:22

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

不可能, 我的就是 7.x 编译的,大家都是用7.x

在线

#28 2019-11-25 09:21:37

aaayao
会员
注册时间: 2019-10-30
累计积分: 72

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

晕哥,你好:
               使用arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2这个工具编译程序,还是运行不了?是那里有问题呢?uboot和内核不是用这个工具编译的。


主机log:
ubuntu@VM-0-16-ubuntu:~$ vi hello.c
ubuntu@VM-0-16-ubuntu:~$ arm-none-linux-gnueabi-gcc -o hello hello.c
ubuntu@VM-0-16-ubuntu:~$ ls
f1c100s  hello  hello.c
ubuntu@VM-0-16-ubuntu:~$


以下是板子lgo:
# ./hello                                                                         
-sh: ./hello: not found
# ./hello                                                                         
-sh: ./hello: not found
# ./hello                                                                         
-sh: ./hello: not found
#

离线

#29 2019-11-25 09:25:42

aaayao
会员
注册时间: 2019-10-30
累计积分: 72

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

我在24楼贴出来了log,GCC是7.X的,后面再编译UBOOT就出错了

晕哥 说:

不可能, 我的就是 7.x 编译的,大家都是用7.x

离线

#30 2019-11-25 09:38:59

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

aaayao 说:

我在24楼贴出来了log,GCC是7.X的,后面再编译UBOOT就出错了

arm-none-linux-gnueabi-gcc 这个是 4.x 的
你要把这个 gcc 升级成 7.x

在线

#31 2019-11-25 09:39:53

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

aaayao 说:

晕哥,你好:

主机log:
ubuntu@VM-0-16-ubuntu:~$ vi hello.c
ubuntu@VM-0-16-ubuntu:~$ arm-none-linux-gnueabi-gcc -o hello hello.c
ubuntu@VM-0-16-ubuntu:~$ ls
f1c100s  hello  hello.c
ubuntu@VM-0-16-ubuntu:~$

#

arm-none-linux-gnueabi-gcc -o hello hello.c -static

在线

#32 2019-11-25 09:56:46

aaayao
会员
注册时间: 2019-10-30
累计积分: 72

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

晕哥 说:

arm-none-linux-gnueabi-gcc -o hello hello.c -static


这样是可以了,但是程序的容量大了几百倍?buildroot编译出来的才不到10KB
QQ%E5%9B%BE%E7%89%8720191125095203.png

离线

#33 2019-11-25 09:58:34

aaayao
会员
注册时间: 2019-10-30
累计积分: 72

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

晕哥 说:

arm-none-linux-gnueabi-gcc 这个是 4.x 的
你要把这个 gcc 升级成 7.x


不是系统的GCC吗?工具琏的这个GCC要怎么升级呢?

离线

#34 2019-11-25 10:02:36

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

在线

#35 2019-11-25 10:21:55

aaayao
会员
注册时间: 2019-10-30
累计积分: 72

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

离线

#36 2019-12-04 14:37:14

大帅
会员
注册时间: 2019-01-17
累计积分: 46

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

标记,自己也入过同样的坑,

离线

#37 2019-12-04 15:20:56

大帅
会员
注册时间: 2019-01-17
累计积分: 46

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

@晕哥
我下载这个怎么有没有ARMv5?
用这个编译运行
# ./NuvotonGUIDemo
Illegal instruction

root@osboxes:/work/Lichee/helloword/emWin/Sample/GUIDemo# cd /work/Lichee/helloword/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/
root@osboxes:/work/Lichee/helloword/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin# ./arm-linux-gnueabi-gcc -v
Using built-in specs.
COLLECT_GCC=./arm-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/work/Lichee/helloword/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/../libexec/gcc/arm-linux-gnueabi/7.4.1/lto-wrapper
Target: arm-linux-gnueabi
Configured with: '/home/tcwg-buildslave/workspace/tcwg-make-release_0/snapshots/gcc.git~linaro-7.4-2019.02/configure' SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-shared --without-included-gettext --enable-nls --with-system-zlib --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --disable-multilib --with-float=soft --with-mode=thumb --with-tune=cortex-a9 --with-arch=armv7-a --enable-threads=posix --enable-multiarch --enable-libstdcxx-time=yes --enable-gnu-indirect-function --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/sysroots/arm-linux-gnueabi --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-linux-gnueabi/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,fortran,lto --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-linux-gnueabi --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release_0/_build/builds/destdir/x86_64-unknown-linux-gnu
Thread model: posix
gcc version 7.4.1 20181213 [linaro-7.4-2019.02 revision 56ec6f6b99cc167ff0c2f8e1a2eed33b1edc85d4] (Linaro GCC 7.4-2019.02)
root@osboxes:/work/Lichee/helloword/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin#

离线

#38 2019-12-04 15:25:56

大帅
会员
注册时间: 2019-01-17
累计积分: 46

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

晕哥 说:

arm-linux-gnueabi-gcc --with-arch=armv4 --static

编译的时候, 加上这个指令试一试。

或者:

arm-linux-gnueabi-gcc --with-arch=armv5te --static

error: unrecognized command line option ‘--with-arch=armv5te’; did you mean ‘-march=armv5te’?

root@osboxes:/work/Lichee/helloword/emWin/Sample/GUIDemo# make
/work/Lichee/helloword/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --with-arch=armv5te -MD -O2 -D__Gui_NumBytes__=512000 -I. -I../../Config -I../../Include -Itslib -c Application/GUIDEMO_Automotive.c -o Application/GUIDEMO_Automotive.o
arm-linux-gnueabi-gcc: error: unrecognized command line option ‘--with-arch=armv5te’; did you mean ‘-march=armv5te’?
Makefile:34: recipe for target 'Application/GUIDEMO_Automotive.o' failed
make: *** [Application/GUIDEMO_Automotive.o] Error 1

离线

#39 2019-12-04 16:25:34

还能这么玩
会员
注册时间: 2019-04-14
累计积分: 119

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

大帅 说:

error: unrecognized command line option ‘--with-arch=armv5te’; did you mean ‘-march=armv5te’?

root@osboxes:/work/Lichee/helloword/emWin/Sample/GUIDemo# make
/work/Lichee/helloword/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabi/bin/arm-linux-gnueabi-gcc --with-arch=armv5te -MD -O2 -D__Gui_NumBytes__=512000 -I. -I../../Config -I../../Include -Itslib -c Application/GUIDEMO_Automotive.c -o Application/GUIDEMO_Automotive.o
arm-linux-gnueabi-gcc: error: unrecognized command line option ‘--with-arch=armv5te’; did you mean ‘-march=armv5te’?
Makefile:34: recipe for target 'Application/GUIDEMO_Automotive.o' failed
make: *** [Application/GUIDEMO_Automotive.o] Error 1

‘--with-arch=armv5te’   ====>    ‘-march=armv5te’

离线

#40 2019-12-04 16:33:47

大帅
会员
注册时间: 2019-01-17
累计积分: 46

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

还能这么玩 说:

‘--with-arch=armv5te’   ====>    ‘-march=armv5te’

试过之后错误变了:~~~~~~makefile没有加-static
# ./NuvotonGUIDemo
Segmentation fault

最近编辑记录 大帅 (2019-12-04 16:35:01)

离线

#41 2019-12-04 16:42:14

晕哥
Administrator
注册时间: 2017-09-06
累计积分: 8,555

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

gdb 定位一下错误

在线

#42 2019-12-04 16:43:42

大帅
会员
注册时间: 2019-01-17
累计积分: 46

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

晕哥 说:

gdb 定位一下错误

@@还不会用gdb~~

离线

#43 2019-12-04 16:45:54

大帅
会员
注册时间: 2019-01-17
累计积分: 46

Re: 荔枝派Nano使用gcc-linaro-7.2.1进行交叉编译得到的可执行文件,一运行就"segmentation fault"

大帅 说:

@@还不会用gdb~~

用arm-none-linux-gnueabi-gcc编译可以运行,但是emwin申请不到栈,就换Linux-gcc试试,一试就撞墙了~~

离线

页脚