Ubuntu配置树莓派交叉编译环境

Ubuntu配置树莓派交叉编译环境


写在前面:网上关于配置树莓派交叉编译环境的教程蛮多的,我将我参考的教程贴在下面。我现在的情况是可以在树莓派上运行,但是不能在pc上运行调试,但终究是能跑了。本篇博客主要记录自己遇到的问题吧,因为我自己按照下面的链接,虽然大体思路是对的,但是还是遇到比较多的问题,所以记录一下,免得以后忘了。
https://www.jianshu.com/p/0b86b42eed71

主要遇到的问题
一、configure和make输出信息过多的问题
configure的话,在qtbase/config.log,里面存有配置信息,可以搜索error之类你需要的信息。当然在重新配置之前,需要删除config.cache和config.log文件
make的话,可以利用make 2>info.log命令,将make过程中的错误信息放入到当前目录下的info.log文件中,同样也可以搜索你需要的信息。
如果make没问题的话,一般sudo make install也不会有问题。如果有问题,就需要去查找info.log文件,去解决问题了。

二、换源的问题
换源的话,我一开始用的是网上随便找的源,没注意位数和版本,所以挺多问题的(可能是有这方面原因),所以源的话,我最后用的是清华源,找到32位还是64位,是buster还是啥的。这个可能会忽略掉一部分的问题。

三、configure过程中的问题
1、configure的参数,可以查看qtbase/config_help.txt文件,里面有参数的说明。

2、关于configure之后的参数,会有一大堆的yes,no。因为configure的参数是使用linux-rasp-pi4-v3d-g++,所以可以参照qtbase/mkspecs/devices/linux-rasp-pi4-v3d-g++/qmake.conf文件,说明哪些是必须为yes的。文档中说明EGLFS, EGLFS GBM, and EGL on X11必须为yes,我记得我一开始是EGLFS为yes,EGL on X11为no,至于EGLFS GBM有点记不清了,改没改也忘了。EGL on X11如何为yes的参考的文档找不到了,可以去网上找找。
ps:这个图是截的网上的,仅作说明用。
网上截的图,只是做说明用

3、如果在configure中,存在numeric_limits<>这个错误,这个本不应该出现的,因为指定了c++编译版本的,而且就算在configure参数中添加c++版本,也同样会出错,所以老老实实打开文件加头文件吧,也就两三个,不多。

#include<limits>  //加个这个就行了

4、如果在configure中遇到EGLFS Mali 不能被选中,也就是EGLFS Mali为no。
如果你是按照上面我贴的链接里的步骤来的话,可以在sysroot/usr/include/EGL/这个文件夹里,添加fbdev_window.h文件。源文件如下:

/*
 1. This confidential and proprietary software may be used only as
 2. authorised by a licensing agreement from ARM Limited
 3. (C) COPYRIGHT 2008-2011 ARM Limited
 4. ALL RIGHTS RESERVED
 5. The entire notice above must be reproduced on all authorised
 6. copies and copies may only be made to the extent permitted
 7. by a licensing agreement from ARM Limited.
 */
 
/**
 8. @file fbdev_window.h
 9. @brief A window type for the framebuffer device (used by egl and tests)
 */
 
#ifndef _FBDEV_WINDOW_H_
#define _FBDEV_WINDOW_H_
 
#ifdef __cplusplus
extern "C" {
    
#endif
 
typedef enum
{
    
	FBDEV_PIXMAP_DEFAULT = 0,
	FBDEV_PIXMAP_SUPPORTS_UMP = (1<<0),
	FBDEV_PIXMAP_ALPHA_FORMAT_PRE = (1<<1),
	FBDEV_PIXMAP_COLORSPACE_sRGB = (1<<2),
	FBDEV_PIXMAP_EGL_MEMORY = (1<<3)        /* EGL allocates/frees this memory */
} fbdev_pixmap_flags;
 
typedef struct fbdev_window
{
    
	unsigned short width;
	unsigned short height;
} fbdev_window;
 
typedef struct fbdev_pixmap
{
    
	unsigned int height;
	unsigned int width;
	unsigned int bytes_per_pixel;
	unsigned char buffer_size;
	unsigned char red_size;
	unsigned char green_size;
	unsigned char blue_size;
	unsigned char alpha_size;
	unsigned char luminance_size;
	fbdev_pixmap_flags flags;
	unsigned short *data;
	unsigned int format; /* extra format information in case rgbal is not enough, especially for YUV formats */
} fbdev_pixmap;
 
#ifdef __cplusplus
}
#endif
 
 
#endif

四、make的问题
make的话,如果configure没问题,make就应该是没问题的。
我前几次没成功时,make只有最多半个小时,最后一次成功的话,make了将近一个小时,所以时间上也是可以做个大致的判断的。如果以后能在pc上调试运行,make的总时间应该更长。
如果想重新make,可以make clean删除之前的make信息。我也试过不执行make clean,直接就make,我也不知道是不是增量编译,总觉得有问题,不放心的话,就跑一下make clean。

五、pc上qt编译代码的问题
1、要记得在.pro文件中,更改存放路径,这个链接里有写,不然会报无访问权限之类的错误。
2、编译如果涉及到libxxx.so的错误,百度之后,提示你是软链接的错误,建议你更新一下树莓派固件库,然后再同步到pc上,也就是重新配置。。。,因为你之前的configure,make都要重新去弄。
3、编译如果报cannot run ,no command given,没记错的话应该是tools里面kits的sysroot没设置,或者是树莓派没有连接,当时这个问题是随着推倒重头重新配置而解决的,所以应该也不是大问题。
4、如果报eglfs_kms,因为这是你EGLDevice是no的问题,这个问题暂时没解决,不过这个不影响树莓派上正常运行。

emmm,印象中就记得这些了,如果有什么补充的,会再补充的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值