imxq Freescale Yocto Project编译记录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/M_N_N/article/details/86569118

参考: IMX6Q环境搭建、安装Yocto包和编译

编译内核

  • 配置menuconfig指令:
    bitbake -c menuconfig -v linux-imx
  • 单独编译kernel、模块、设备树
    bitbake -c compile -f -v linux-imx
    bitbake linux-imx -c compile_kernelmodules -f -v
    bitbake -c deploy -f -v linux-imx
  • 若要编译文件系统则用下面总指令
    bitbake core-image-minimal
  • 单独编译u-boot
    bitbake -c compile -f -v u-boot-imx
    bitbake -c deploy -f -v u-boot-imx

ERROR:
1.

| In file included from /home/okletsgo/work/tmp/fsl-release-bsp/build/tmp/work/x86_64-linux/ncurses-native/5.9-r15.1/ncurses-5.9/ncurses/curses.priv.h:283:0,
|                  from ../ncurses/lib_gen.c:19:
| _15038.c:1364:15: error: expected ')' before 'int'
| ../include/curses.h:1906:56: note: in definition of macro 'mouse_trafo'
|  #define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen)

解决: 解决从源码编译ncurses6.0编译lib_gen.c报错的问题
搜索 curses.tail 文件. 将该文件中的注释"/* generated /"删除.
extern NCURSES_EXPORT(bool) mouse_trafo (int
, int*, bool); /* generated */
然后删除文件curses.h, 再编译.

argp-help.o: In function `argp_fmtstream_write':
argp-help.c:(.text+0x1df0): multiple definition of `argp_fmtstream_write'
argp-fmtstream.o:argp-fmtstream.c:(.text+0x7a0): first defined here
argp-help.o: In function `argp_fmtstream_puts':
argp-help.c:(.text+0x1e40): multiple definition of `argp_fmtstream_puts'
argp-fmtstream.o:argp-fmtstream.c:(.text+0x860): first defined here
argp-help.o: In function `argp_fmtstream_putc':
argp-help.c:(.text+0x1eb0): multiple definition of `argp_fmtstream_putc'
argp-fmtstream.o:argp-fmtstream.c:(.text+0x800): first defined here

原因: argp-fmtstream.h 中 #define ARGP_FS_EI extern inline
extern inline在GNU89和C99标准中用法不同,这里使用GNU89标准编译
解决:
vim /home/okletsgo/work/tmp/fsl-release-bsp/build/tmp/work/x86_64-linux/cross-localedef-native/2.20-r0/build/Makefile
添加编译参数 -std=gnu89
可以将cross-localedef-native提取出来编译, 生成argp-fmtstream.o argp-help.o后替换进去

其他:


linux源码:/media/okletsgo/other/freescale/fsl-arm-yocto-bsp-3.10.53/build-fb/tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-imx/3.10.53-r0/git

设备树:/media/okletsgo/other/freescale/fsl-arm-yocto-bsp-3.10.53/build-fb/tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-imx/3.10.53-r0/git/arch/arm/boot/dts

u-boot源码:/media/okletsgo/other/freescale/fsl-arm-yocto-bsp-3.10.53/build-fb/tmp/work/imx6qsabresd-poky-linux-gnueabi/u-boot-imx/2014.04-r0/git

rootfs:/media/okletsgo/other/freescale/fsl-arm-yocto-bsp-3.10.53/build-fb/tmp/work/imx6qsabresd-poky-linux-gnueabi/fsl-image-gui/1.0-r0/rootfs

cross-gcc-4.8.2: /media/okletsgo/other/freescale/fsl-arm-yocto-bsp-3.10.53/build-fb/tmp/sysroots/x86_64-linux/usr/bin/cortexa9-vfp-neon-poky-linux-gnueabi

u-boot单独编译:---------------------------------------
vim build_u-boot.sh

#!/bin/bash

export ARCH=arm
export CROSS_COMPILE=/media/okletsgo/other/freescale/fsl-arm-yocto-bsp-3.10.53/build-fb/tmp/sysroots/x86_64-linux/usr/bin/cortexa9-vfp-neon-poky-linux-gnueabi/arm-poky-linux-gnueabi- 
export CC="/media/okletsgo/other/freescale/fsl-arm-yocto-bsp-3.10.53/build-fb/tmp/sysroots/x86_64-linux/usr/bin/cortexa9-vfp-neon-poky-linux-gnueabi/arm-poky-linux-gnueabi-gcc --sysroot=/media/okletsgo/other/freescale/fsl-arm-yocto-bsp-3.10.53/build-fb/tmp/sysroots/imx6qsabresd"
make mx6qsabresd_config
make CC="$CC"
./build_u-boot.sh

猜你喜欢

转载自blog.csdn.net/M_N_N/article/details/86569118