Toybrick

标题: 交叉编译工具链选用 [打印本页]

作者: raigor    时间: 2019-2-26 23:15
标题: 交叉编译工具链选用
因为项目需求,需要做交叉编译,试了gcc-linaro-6.5.0-2018.12-x86_64_aarch64-linux-gnu工具链,编译的Qt程序底层libdl.so不兼容(错误信息见下图),把底层的库都替换掉又不现实。初步考虑:
1.选用兼容的工具链;
2.直接使用官方的工具链。

方法2最好,最直接,那么问题来了,官方的工具链在哪下载呢?或者提供一个兼容的工具链?


[attach]135[/attach]


各位社友,请不吝赐教~

作者: leok    时间: 2019-2-26 23:26
1、首先确认在板子上是否有gcc,没有的话直接dnf安装gcc,之后可在板上直接编译你的程序
作者: raigor    时间: 2019-2-26 23:38
leok 发表于 2019-2-26 23:26
1、首先确认在板子上是否有gcc,没有的话直接dnf安装gcc,之后可在板上直接编译你的程序 ...

在板子上搭建开发环境比较繁琐,而且有很大的局限性;arm单板毕竟性能有效,交叉编译有助于效率的提升。所以,我这个项目最好是有交叉编译环境。
作者: jefferyzhang    时间: 2019-2-27 09:18
交叉编译自带的so需要从板子上拷贝,制作适合这块板子这个系统的的交叉编译环境。
sysroot直接用交叉编译自带的当然会各种问题拉。。。
作者: raigor    时间: 2019-2-27 09:33
jefferyzhang 发表于 2019-2-27 09:18
交叉编译自带的so需要从板子上拷贝,制作适合这块板子这个系统的的交叉编译环境。
sysroot直接用交叉编译自 ...

前期调研阶段在单板上编译开发,问题都不大;但是项目化运作后,交叉编译工具链和root fs是两块必须的工具,建议官方拆分一下打包发布。
作者: jefferyzhang    时间: 2019-2-27 10:58
raigor 发表于 2019-2-27 09:33
前期调研阶段在单板上编译开发,问题都不大;但是项目化运作后,交叉编译工具链和root fs是两块必须的工 ...

一般来说官方不太可能把每个操作系统的编译链都给大家打包一份发布吧
这个工具链肯定要自己做了额
作者: gary.zhang    时间: 2019-3-12 10:30
jefferyzhang 发表于 2019-2-27 10:58
一般来说官方不太可能把每个操作系统的编译链都给大家打包一份发布吧
这个工具链肯定要自己做了 ...

交叉编译工具链每个用户都自己做,多浪费。官方不需要针对每一个系统都提供编译工具链,但默认支持的系统要提供一套
作者: 嘻嘻哈哈    时间: 2019-4-26 11:00
本帖最后由 嘻嘻哈哈 于 2019-4-26 11:01 编辑

大家找到能用的兼容的工具链了吗,gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu.tar试了一下不行
作者: xsky    时间: 2019-11-27 15:11
板子上编译是效率有点低,我也建议需要交叉编译,可以至少提供windows或ubuntu其中一种也好啊
作者: xsky    时间: 2019-11-27 15:12
jefferyzhang 发表于 2019-2-27 10:58
一般来说官方不太可能把每个操作系统的编译链都给大家打包一份发布吧
这个工具链肯定要自己做了 ...

提供windows或ubuntu其中一种也好啊
作者: ceyyso    时间: 2020-9-22 12:36
有多人需要交叉编译怎么办,难道要为公司每个同事都买个开发板吗?
作者: jefferyzhang    时间: 2020-9-22 14:17
xsky 发表于 2019-11-27 15:12
提供windows或ubuntu其中一种也好啊

ubuntu直接apt install gcc-x-aarch64-linux-gnu 就是了
这种基础问题自己百度下比较快
作者: zg5918    时间: 2021-2-26 16:30
我目前是:安装了ubuntu虚拟机,想在上面编译这块板子的内核,我把官网的工具链放上去了,从官网下载了内核源码,但编译不过
#
# configuration written to .config
#
scripts/kconfig/conf  --silentoldconfig Kconfig
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CC      scripts/mod/empty.o
  CC      scripts/mod/devicetable-offsets.s
gcc: error: unrecognized command line option '-mlittle-endian'
gcc: error: unrecognized command line option '-mgeneral-regs-only'
scripts/Makefile.build:153: recipe for target 'scripts/mod/devicetable-offsets.s' failed
make[2]: *** [scripts/mod/devicetable-offsets.s] Error 1
make[2]: *** Waiting for unfinished jobs....
gcc: error: unrecognized command line option '-mlittle-endian'
gcc: error: unrecognized command line option '-mgeneral-regs-only'
scripts/Makefile.build:277: recipe for target 'scripts/mod/empty.o' failed
make[2]: *** [scripts/mod/empty.o] Error 1
scripts/Makefile.build:484: recipe for target 'scripts/mod' failed
make[1]: *** [scripts/mod] Error 2
Makefile:590: recipe for target 'scripts' failed
make: *** [scripts] Error 2
make: *** Waiting for unfinished jobs....
  CHK     include/generated/utsrelease.h
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CC      scripts/mod/empty.o
  CC      scripts/mod/devicetable-offsets.s
gcc: error: unrecognized command line option '-mlittle-endian'
gcc: error: unrecognized command line option '-mgeneral-regs-only'
scripts/Makefile.build:277: recipe for target 'scripts/mod/empty.o' failed
make[2]: *** [scripts/mod/empty.o] Error 1
make[2]: *** Waiting for unfinished jobs....
  CHK     include/generated/utsrelease.h
gcc: error: unrecognized command line option '-mlittle-endian'
gcc: error: unrecognized command line option '-mgeneral-regs-only'
scripts/Makefile.build:153: recipe for target 'scripts/mod/devicetable-offsets.s' failed
make[2]: *** [scripts/mod/devicetable-offsets.s] Error 1
scripts/Makefile.build:484: recipe for target 'scripts/mod' failed
make[1]: *** [scripts/mod] Error 2
Makefile:590: recipe for target 'scripts' failed
make: *** [scripts] Error 2
make: *** Waiting for unfinished jobs....
cp: cannot stat 'arch/arm64/boot/dts/rockchip/rk3399pro-toybrick-prod-linux-edp.dtb': No such file or directory
cp: cannot stat 'arch/arm64/boot/dts/rockchip/rk3399pro-toybrick-prod-linux-mipi.dtb': No such file or directory
  CHK     include/config/kernel.release
  CHK     include/generated/uapi/linux/version.h
  CC      scripts/mod/devicetable-offsets.s
  CC      scripts/mod/empty.o
  CHK     include/generated/utsrelease.h
gcc: error: unrecognized command line option '-mlittle-endian'
gcc: error: unrecognized command line option '-mgeneral-regs-only'
scripts/Makefile.build:277: recipe for target 'scripts/mod/empty.o' failed
make[2]: *** [scripts/mod/empty.o] Error 1
make[2]: *** Waiting for unfinished jobs....
gcc: error: unrecognized command line option '-mlittle-endian'
gcc: error: unrecognized command line option '-mgeneral-regs-only'
scripts/Makefile.build:153: recipe for target 'scripts/mod/devicetable-offsets.s' failed
make[2]: *** [scripts/mod/devicetable-offsets.s] Error 1
scripts/Makefile.build:484: recipe for target 'scripts/mod' failed
make[1]: *** [scripts/mod] Error 2
Makefile:590: recipe for target 'scripts' failed
make: *** [scripts] Error 2
make: *** Waiting for unfinished jobs....
cp: cannot stat 'arch/arm64/boot/dts/rockchip/rk3399pro-toybrick-prod-linux.dtb': No such file or directory
cp: cannot stat 'arch/arm64/boot/dts/rockchip/rk3399pro-toybrick-prod-linux.dtb': No such file or directory
cp: cannot stat 'arch/arm64/boot/Image': No such file or directory

作者: 辣手熊猫    时间: 2021-12-2 16:46
ceyyso 发表于 2020-9-22 12:36
有多人需要交叉编译怎么办,难道要为公司每个同事都买个开发板吗?

这种问题如果不是他们开发部懒,就是多了个心机,让你买多个开发板




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3