您尚未登录。

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

zhouyu2019
会员
注册时间: 2019-11-07
已发帖子: 42
积分: 42

荔枝派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
已发帖子: 95
积分: 93.5

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

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

离线

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

zhouyu2019
会员
注册时间: 2019-11-07
已发帖子: 42
积分: 42

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
已发帖子: 57
积分: 57

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

你用的是哪个gcc工具链?

离线

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

zhouyu2019
会员
注册时间: 2019-11-07
已发帖子: 42
积分: 42

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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
已发帖子: 42
积分: 42

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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
已发帖子: 42
积分: 42

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
已发帖子: 42
积分: 42

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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
已发帖子: 42
积分: 42

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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

对, 可以都用这个。





离线

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

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

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

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

离线

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

zhouyu2019
会员
注册时间: 2019-11-07
已发帖子: 42
积分: 42

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

kekemuyu 说:

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

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

离线

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

kekemuyu
会员
注册时间: 2018-12-13
已发帖子: 841
积分: 721

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

zhouyu2019 说:

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

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

离线

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

aaayao
会员
注册时间: 2019-10-30
已发帖子: 84
积分: 59

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
已发帖子: 84
积分: 59

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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

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





离线

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

aaayao
会员
注册时间: 2019-10-30
已发帖子: 84
积分: 59

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
已发帖子: 84
积分: 59

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

晕哥 说:

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

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

离线

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

异乡是故乡
会员
注册时间: 2019-11-15
已发帖子: 74
积分: 73.5

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
已发帖子: 84
积分: 59

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
会员
注册时间: 2017-10-29
已发帖子: 316
积分: 315

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

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

离线

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

aaayao
会员
注册时间: 2019-10-30
已发帖子: 84
积分: 59

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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

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





离线

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

aaayao
会员
注册时间: 2019-10-30
已发帖子: 84
积分: 59

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
已发帖子: 84
积分: 59

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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
已发帖子: 84
积分: 59

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
已发帖子: 84
积分: 59

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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





离线

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

aaayao
会员
注册时间: 2019-10-30
已发帖子: 84
积分: 59

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

离线

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

大帅
会员
注册时间: 2019-01-17
已发帖子: 167
积分: 131.5

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

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

离线

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

大帅
会员
注册时间: 2019-01-17
已发帖子: 167
积分: 131.5

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
已发帖子: 167
积分: 131.5

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
积分: 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
已发帖子: 167
积分: 131.5

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

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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

gdb 定位一下错误





离线

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

大帅
会员
注册时间: 2019-01-17
已发帖子: 167
积分: 131.5

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

晕哥 说:

gdb 定位一下错误

@@还不会用gdb~~

离线

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

大帅
会员
注册时间: 2019-01-17
已发帖子: 167
积分: 131.5

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

大帅 说:

@@还不会用gdb~~

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

离线

#44 2019-12-26 12:17:14

hong
会员
注册时间: 2019-12-19
已发帖子: 7
积分: 7

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

哪位大神,告诉一下这个问题咋解决的

最近编辑记录 hong (2019-12-26 12:17:35)

离线

#45 2019-12-26 12:19:14

hong
会员
注册时间: 2019-12-19
已发帖子: 7
积分: 7

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

zhouyu2019 说:

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



现在在这个坑里,能说一下如何解决吗?

离线

#46 2019-12-26 13:45:19

达克罗德
会员
注册时间: 2018-04-10
已发帖子: 1,134
积分: 1086.5

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

我遇到和楼主一样的问题,这个其实根本原因是buildroot用的编译器和编应用程序的编译器不同导致的。因为你会用到标准库,标准库是buildroot的编译器编的。
buildroot我用的是4.x,就是他推荐自带的版本,我用这个编译器编应用完全没问题

离线

#47 2019-12-26 14:09:02

晕哥
管理员
所在地: 微信 whycan_cn
注册时间: 2017-09-06
已发帖子: 9,238
积分: 9197

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

hong 说:


现在在这个坑里,能说一下如何解决吗?

https://whycan.cn/t_3265.html#p28156

本贴 12 楼





离线

#48 2020-01-07 14:02:57

nufing
会员
注册时间: 2020-01-02
已发帖子: 92
积分: 86.5

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

达克罗德 说:

我遇到和楼主一样的问题,这个其实根本原因是buildroot用的编译器和编应用程序的编译器不同导致的。因为你会用到标准库,标准库是buildroot的编译器编的。
buildroot我用的是4.x,就是他推荐自带的版本,我用这个编译器编应用完全没问题

我现在也在这个坑里,请问, 是buildroot的版本要用  4.x  还是  gcc版本要  4.x ?

离线

#49 2020-03-28 16:23:13

灯火阑珊路人甲
会员
注册时间: 2020-03-27
已发帖子: 1
积分: 1

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

按照晕哥的方法,安装低版本arm-none-linux-gnueabi-gcc 完美解决,而且可以和arm-linux-gnueabi-gcc 完美共存。
arm-none-linux-gnueabi-gcc -march=armv5te

离线

#50 2020-04-30 22:05:46

hzy831225
会员
注册时间: 2020-04-11
已发帖子: 40
积分: 35

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

遇到同样问题,使用晕哥推荐编译器,静态编译后HELLOWORD可以跑起来,但是BIN文件太大。
动态编译,直接打印-sh: hi1: not found查看了一下,少libc.so.6的库,
我把编译器中的libc.so.6 与相关的软链接的库文件libc-2.18.so 放到/lib后。直接报"Segmentation fault“。
不明白问题在哪里?我有点搞晕了!

离线

#51 2020-04-30 22:25:50

哇酷小二
wechat微信:whycan_cn
所在地: 你猜
注册时间: 2020-04-22
已发帖子: 3,378
积分: 1902
个人网站

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

libc.so 要用编译器目录里面那个, 随便拷贝进来的是不行的, 最省事的办法就是用 buildroot





离线

#52 2020-04-30 22:29:46

hzy831225
会员
注册时间: 2020-04-11
已发帖子: 40
积分: 35

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

我是用编译器目录的。不过我编译内核的编译器和buildroot的编译器不是同一个,不知道是不是有影响

离线

#53 2020-04-30 22:32:50

哇酷小二
wechat微信:whycan_cn
所在地: 你猜
注册时间: 2020-04-22
已发帖子: 3,378
积分: 1902
个人网站

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

hzy831225 说:

我是用编译器目录的。不过我编译内核的编译器和buildroot的编译器不是同一个,不知道是不是有影响

没有影响.

你用 buildroot 编译的文件系统?那你应该用 buildroot 的 out/target 目录里面的 libc 才对.





离线

#54 2020-04-30 22:35:05

hzy831225
会员
注册时间: 2020-04-11
已发帖子: 40
积分: 35

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

我看了一下,编译器用的就是晕哥推荐的”arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2“;
buildroot 中使用的编译器也是这个;

离线

#55 2020-04-30 22:40:27

hzy831225
会员
注册时间: 2020-04-11
已发帖子: 40
积分: 35

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

哇酷小二 说:

没有影响.

你用 buildroot 编译的文件系统?那你应该用 buildroot 的 out/target 目录里面的 libc 才对.

我想可能与内核的编译器有关。晚上我再把UBOOT,内核,buildroot 都使用晕哥推荐的重新编译一圈

离线

#56 2020-05-05 16:09:05

zhaoxu1887
会员
注册时间: 2020-02-23
已发帖子: 3
积分: 3

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

编译器版本问题,编译应用程序的版本要和编译根文件系统的一致。

离线

#57 2020-05-05 17:46:21

LinjieGuo
Moderator
注册时间: 2019-07-24
已发帖子: 565
积分: 570
个人网站

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

请参考https://whycan.cn/t_4266.html,补全运行库。

最近编辑记录 LinjieGuo (2020-05-05 17:46:44)

离线

#58 2020-06-13 13:51:13

拉轰的脚踏车
会员
注册时间: 2020-03-20
已发帖子: 288
积分: 222

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

编译 f1c100s 的文件系统只能用 2014.05-29 吗?能不能用更新的,感觉好老啊。

离线

#59 2020-06-13 14:56:05

路人甲
会员
注册时间: 2017-09-07
已发帖子: 202
积分: 199.5

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

ubuntu18.04 x64需要安装32bit的依赖包:

sudo apt-get install lib32ncurses5 lib32z1 -y

离线

#60 2021-02-18 17:15:40

MTLINUX
会员
注册时间: 2019-10-21
已发帖子: 28
积分: 0.5

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$

一样问题,用晕哥说的  arm-2014.05-29-arm-none-linux-gnueabi 测试可以;

下了 arm-2014.05-29-arm-none-linux-gnueabi-i686-mingw32.tar.bz2
在windows下eclipse里编译app,放到板里能正常运行;

离线

#61 2023-06-06 19:53:55

jiabuda
会员
注册时间: 2023-06-05
已发帖子: 24
积分: 9

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

LinjieGuo 说:

请参考https://whycan.cn/t_4266.html,补全运行库。


我的是提示not found
后面解决了,依据帖子,gcc需要用buildroot output里面的gcc,然后添加c文件,-o test,然后编译出来就可以顺利运行了

荔枝派官方的文档实在太多坑,选了musl,但是U-boot又用gnu的编译器,这个应该才是最误导的地方

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn