Qt5.14.2移植到SOM-RK3399开发板

  • 1. 主机开发环境
  • 2. 安装aarch64-linux-gnu-g++交叉编译工具
  • 3. 移植Qt
    • 3.1 修改Qt源码中的Makefile说明文档目录
  • 4. 编译Qt5.14.2源码
    • 4.1 创建编译Qt5.14.2源码的影子构建目录
    • 4.2 创建并编辑自动配置脚本
    • 4.3 执行make编译qt源码
    • 4.3 执行make install安装qt
  • 5. 确保网络的连通
    • 5.1 配置虚拟机网络配置
    • 5.2 配置Ubuntu18.04的以太网口的IP
    • 5.3 打开Windows系统网络连接配置以太网口的IP
    • 5.4 配置SOM-RK3399板子的IP
  • 6. SOM-RK3399 NFS网络文件系统环境搭建
    • 6.1 在UBuntu18.04上搭建NFS服务器
      • 6.1.1 安装NFS Server
      • 6.1.2 配置NFS Server,它的配置文件是/etc/exports
      • 6.1.3 编辑/etc/exports文件
      • 6.1.4 重启NFS服务(每次修改/etc/exports文件后都需要重新启动 NFS 服务)
      • 6.1.5 在UBuntu18.04本机上测试搭建的NFS服务器是否成功
      • 6.1.6 卸载挂载的共享目录
    • 6.2 在SOM-RK3399开发板上挂载UBuntu18.04上的NFS服务器的共享目录
      • 6.2.1 在SOM-RK3399开发板的FriendlyELEC系统上安装NFS服务
      • 6.2.2 重启NFS服务
      • 6.2.3 测试和Ubuntu18.0.4的网络是否连通
      • 6.2.4 将Ubuntu18.0.4上的共享目录som_rk3399_nfs挂载到开发板上
      • 6.2.4 编辑SOM-RK3399的/etc/fstab文件,使开机自动挂载NFS服务器共享目录
  • 7. 在SOM-RK3399开发板上安装sshd
    • 7.1 重启sshd服务
    • 7.2 打开MobaXterm连接开发板
  • 8. 配置Ubuntu18.04上的Qt开发环境
    • 8.1 配置编译器
    • 8.2 配置Qt的版本
    • 8.3 配置build套件
  • 9. 配置SOM-RK3399板子上的开发环境
    • 9.1 打包交叉编译的Qt5.14.2
    • 9.2 将qt5.14.2_install.tar.gz 拷贝到共享目录
    • 9.3 将qt5.14.2_install.tar.gz解压到SOM-RK339开发板上的/opt目录
    • 9.4 编辑/etc/profile,配置QT环境变量
  • 10. 测试
    • 10.1 在Ubuntu18.0.4打开QCreator创建一个测试工程
    • 10.2 在主界面添加一个按钮并实现一个槽用来更改按钮的文本
    • 10.3 在Ubuntu18.04上只编译Qt测试工程
    • 10.4 将编译成功的可执行文件test_som_rk3399拷贝到共享目录
    • 10.5 在SOM-RK3399开发板上执行./test_som_rk3399

参考这篇文章

1. 主机开发环境

  1. 虚拟机Ubuntu18.04
  2. Qt源码Qt5.14.2以及Qt安装包
  3. 交叉编译工具官方下载地址

2. 安装aarch64-linux-gnu-g++交叉编译工具

安装交叉编译工具,我选择通过命令行安装,没有选择从官方地址下载。

  • 更新软件源和升级更新软件
sudo apt-get update
sudo apt-get upgrade
  • 查看有哪些可选的交叉编译工具可供安装
$ sudo apt-cache search aarch64
binutils-aarch64-linux-gnu - GNU binary utilities, for aarch64-linux-gnu target
binutils-aarch64-linux-gnu-dbg - GNU binary utilities, for aarch64-linux-gnu target (debug symbols)
cpp-7-aarch64-linux-gnu - GNU C preprocessor
cpp-aarch64-linux-gnu - GNU C preprocessor (cpp) for the arm64 architecture
g++-aarch64-linux-gnu - GNU C++ compiler for the arm64 architecture
gcc-7-aarch64-linux-gnu-base - GCC, the GNU Compiler Collection (base package)
gcc-aarch64-linux-gnu - GNU C compiler for the arm64 architecture
qemu-system-arm - QEMU full system emulation binaries (arm)
cpp-5-aarch64-linux-gnu - GNU C preprocessor
cpp-6-aarch64-linux-gnu - GNU C preprocessor
cpp-8-aarch64-linux-gnu - GNU C preprocessor
g++-5-aarch64-linux-gnu - GNU C++ compiler
g++-6-aarch64-linux-gnu - GNU C++ compiler
gcc-5-aarch64-linux-gnu - GNU C compiler
gcc-5-aarch64-linux-gnu-base - GCC, the GNU Compiler Collection (base package)
gcc-5-plugin-dev-aarch64-linux-gnu - Files for GNU GCC plugin development.
gcc-6-aarch64-linux-gnu - GNU C compiler
gcc-6-aarch64-linux-gnu-base - GCC, the GNU Compiler Collection (base package)
gcc-6-plugin-dev-aarch64-linux-gnu - Files for GNU GCC plugin development.
gcc-7-plugin-dev-aarch64-linux-gnu - Files for GNU GCC plugin development.
gcc-8-aarch64-linux-gnu-base - GCC, the GNU Compiler Collection (base package)
gcc-8-plugin-dev-aarch64-linux-gnu - Files for GNU GCC plugin development.
gccgo-5-aarch64-linux-gnu - GNU Go compiler
gccgo-6-aarch64-linux-gnu - GNU Go compiler
gccgo-7-aarch64-linux-gnu - GNU Go compiler
gccgo-8-aarch64-linux-gnu - GNU Go compiler
gccgo-aarch64-linux-gnu - Go compiler (based on GCC) for the arm64 architecture
gdc-5-aarch64-linux-gnu - GNU D compiler (version 2)
gdc-6-aarch64-linux-gnu - GNU D compiler (version 2)
gdc-aarch64-linux-gnu - GNU D compiler (based on GCC) for the arm64 architecture
gfortran-5-aarch64-linux-gnu - GNU Fortran compiler
gfortran-6-aarch64-linux-gnu - GNU Fortran compiler
gfortran-7-aarch64-linux-gnu - GNU Fortran compiler
gfortran-8-aarch64-linux-gnu - GNU Fortran compiler
gfortran-aarch64-linux-gnu - GNU Fortran 95 compiler for the arm64 architecture
gnat-5-aarch64-linux-gnu - GNU Ada compiler
gnat-5-sjlj-aarch64-linux-gnu - GNU Ada compiler (setjump/longjump runtime library)
gnat-6-aarch64-linux-gnu - GNU Ada compiler
gnat-6-sjlj-aarch64-linux-gnu - GNU Ada compiler (setjump/longjump runtime library)
gnat-7-aarch64-linux-gnu - GNU Ada compiler
gnat-7-sjlj-aarch64-linux-gnu - GNU Ada compiler (setjump/longjump runtime library)
gnat-8-aarch64-linux-gnu - GNU Ada compiler
gnat-8-sjlj-aarch64-linux-gnu - GNU Ada compiler (setjump/longjump runtime library)
gobjc++-5-aarch64-linux-gnu - GNU Objective-C++ compiler
gobjc++-6-aarch64-linux-gnu - GNU Objective-C++ compiler
gobjc++-7-aarch64-linux-gnu - GNU Objective-C++ compiler
gobjc++-8-aarch64-linux-gnu - GNU Objective-C++ compiler
gobjc++-aarch64-linux-gnu - GNU Objective-C++ compiler for the arm64 architecture
gobjc-5-aarch64-linux-gnu - GNU Objective-C compiler
gobjc-6-aarch64-linux-gnu - GNU Objective-C compiler
gobjc-7-aarch64-linux-gnu - GNU Objective-C compiler
gobjc-8-aarch64-linux-gnu - GNU Objective-C compiler
gobjc-aarch64-linux-gnu - GNU Objective-C compiler for the arm64 architecture
pkg-config-aarch64-linux-gnu - manage compile and link flags for libraries for arm64 architecture
qemu-efi - transitional dummy package
qemu-efi-aarch64 - UEFI firmware for 64-bit ARM virtual machines
g++-7-aarch64-linux-gnu - GNU C++ compiler (cross compiler for arm64 architecture)
gcc-7-aarch64-linux-gnu - GNU C compiler (cross compiler for arm64 architecture)
g++-8-aarch64-linux-gnu - GNU C++ compiler (cross compiler for arm64 architecture)
gcc-8-aarch64-linux-gnu - GNU C compiler (cross compiler for arm64 architecture)
gdc-7-aarch64-linux-gnu - GNU D compiler (version 2) (cross compiler for arm64 architecture)
gdc-8-aarch64-linux-gnu - GNU D compiler (version 2) (cross compiler for arm64 architecture)
  • 安装g+±aarch64-linux-gnu
sudo apt-get install g++-aarch64-linux-gnu
  • 查看aarch64-linux-gnu-g++安装到了哪里
$ which aarch64-linux-gnu-g++
/usr/bin/aarch64-linux-gnu-g++
  • 查看aarch64-linux-gnu-g++安装的版本
$ aarch64-linux-gnu-g++ -v
Using built-in specs.
COLLECT_GCC=aarch64-linux-gnu-g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/aarch64-linux-gnu/7/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=aarch64-linux-gnu --program-prefix=aarch64-linux-gnu- --includedir=/usr/aarch64-linux-gnu/include
Thread model: posix
gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)

3. 移植Qt

3.1 修改Qt源码中的Makefile说明文档目录

  • 进入mkspecs目录
$ cd Code/qtsourcecode/qt-everywhere-src-5.14.2/qtbase/mkspecs/
  • 新建目录linux-arm-som-rk3399
$ mkdir linux-arm-som-rk3399

  • 将linux-aarch64-gnu-g++目录中的两个文件qmake.conf和qplatformdefs.h拷贝到linux-arm-som-rk3399目录中
$ cp linux-aarch64-gnu-g++/* linux-arm-som-rk3399/
  • 修改linux-arm-som-rk3399/qmake.conf文件

qmake.conf文件的原始文件内容:

#
# qmake configuration for building with aarch64-linux-gnu-g++
#MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublibinclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)# modifications to g++.conf
QMAKE_CC                = aarch64-linux-gnu-gcc
QMAKE_CXX               = aarch64-linux-gnu-g++
QMAKE_LINK              = aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB        = aarch64-linux-gnu-g++# modifications to linux.conf
QMAKE_AR                = aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY           = aarch64-linux-gnu-objcopy
QMAKE_NM                = aarch64-linux-gnu-nm -P
QMAKE_STRIP             = aarch64-linux-gnu-strip
load(qt_config)

qmake.conf修改后的文件内容:

#
# qmake configuration for building with aarch64-linux-gnu-g++
#MAKEFILE_GENERATOR      = UNIX
CONFIG                 += incremental
QMAKE_INCREMENTAL_STYLE = sublibQT_QPA_DEFAULT_PLATFORM = linuxfb
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -ltsinclude(../common/linux.conf)
include(../common/gcc-base-unix.conf)
include(../common/g++-unix.conf)# modifications to g++.conf
QMAKE_CC                = aarch64-linux-gnu-gcc
QMAKE_CXX               = aarch64-linux-gnu-g++
QMAKE_LINK              = aarch64-linux-gnu-g++
QMAKE_LINK_SHLIB        = aarch64-linux-gnu-g++# modifications to linux.conf
QMAKE_AR                = aarch64-linux-gnu-ar cqs
QMAKE_OBJCOPY           = aarch64-linux-gnu-objcopy
QMAKE_NM                = aarch64-linux-gnu-nm -P
QMAKE_STRIP             = aarch64-linux-gnu-strip
load(qt_config)

4. 编译Qt5.14.2源码

4.1 创建编译Qt5.14.2源码的影子构建目录

创建影子构建目录的目的是:避免直接在Qt源码目录的根目录直接运行configure命令行工具污染源码

  • 在Qt源码目录的上一级目录创建目录shadow_build_qt_5.14.2
$ mkdir shadow_build_qt_5.14.2

4.2 创建并编辑自动配置脚本

  • 进入shadow_build_qt_5.14.2目录,然后创建一个自动配置脚本auto.sh
$ cd shadow_build_qt_5.14.2
$ touch auto.sh
  • 编辑auto.sh,内容如下:
#!/bin/bash../qt-everywhere-src-5.14.2/configure \-xplatform linux-arm-som-rk3399 \-prefix /home/bruce/Code/qtsourcecode/shadow_build_qt_5.14.2/sysbase/qt5.14.2_install \-release -opensource -confirm-license \-make libs \-pch \-qt-libjpeg \-qt-libpng \-qt-zlib \-no-opengl \-no-sse2 \-no-openssl \-no-cups \-no-glib \-no-dbus \-no-xcb \-no-separate-debug-info \-c++std c++17 \
  • 给auto.sh添加可执行权限
$ sudo chmod a+x auto.sh
  • 执行auto.sh配置Qt源码
$ ./auto.sh

4.3 执行make编译qt源码

$ make -j4

4.3 执行make install安装qt

执行make install后安装到了shadow_build_qt_5.14.2/sysbase/qt5.14.2_install目录

$ cd ~/Code/qtsourcecode/shadow_build_qt_5.14.2/sysbase/qt5.14.2_install
$ ls
bin  doc  include  lib  mkspecs  plugins  qml

5. 确保网络的连通

5.1 配置虚拟机网络配置

我使用笔记本开发的,在笔记本上使用VirtualBox虚拟了Ubuntu18.0.4系统,通过无限网路可以连接到因特网
为了使Ubuntu也能上网,网络配置只能是使用如下图所示:(其他连接方式不能上网)


现在Ubuntu中只有一个无限网卡虚拟的网口,为了和SOM-RK3399开发板通过网线连通,则需要再配置一个网卡2,配置的连接方式如下:

5.2 配置Ubuntu18.04的以太网口的IP


5.3 打开Windows系统网络连接配置以太网口的IP

将其配置为如下IP,保证和SOM-RK3399板子在同一网段

5.4 配置SOM-RK3399板子的IP

  • 右键单击无线网络信号标志,选择"Edit Connections…"菜单
  • 选择以太网口eth0
  • 配置以太网口eth0的IP地址(只需要配置Address,Netmask是自动设置的)
  • 命令行查看以太网口eth0的IP

6. SOM-RK3399 NFS网络文件系统环境搭建

参考了这篇文章

6.1 在UBuntu18.04上搭建NFS服务器

6.1.1 安装NFS Server

sudo apt-get install nfs-kernel-server

6.1.2 配置NFS Server,它的配置文件是/etc/exports

创建NFS共享目录som_rk3399_nfs

$ mkdir /home/bruce/Code/Projects/som_rk3399_nfs
$ cd /home/bruce/Code/Projects

设置共享文件夹的权限

$ sudo chmod -R 777 som_rk3399_nfs

设置共享文件夹的所有者

sudo chown bruce:bruce som_rk3399_nfs/ -R

6.1.3 编辑/etc/exports文件

# /etc/exports: the access control list for filesystems which may be exported
#       to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/home/bruce/Code/Projects/som_rk3399_nfs *(rw,sync,no_root_squash)
  • /home/bruce/Code/Projects/som_rk3399_nfs: 就是要共享的目录
  • "*":代表允许所有的网络段访问
  • rw:表示的是可读可写的访问权限
  • sync: 表示的是资料同步写入内存和硬盘
  • no_root_squash:是Ubuntu nfs 客户端共享目录使用者的权限,如果客户端使用的是root 用户,那么对于该共享目录而言,该客户端就具有root 权限

6.1.4 重启NFS服务(每次修改/etc/exports文件后都需要重新启动 NFS 服务)

sudo /etc/init.d/nfs-kernel-server restart

6.1.5 在UBuntu18.04本机上测试搭建的NFS服务器是否成功

将共享目录挂载到UBuntu18.04本机上的/mnt目录,随便在som_rk3399_nfs目录中或者/mnt中创建一个文件,看som_rk3399_nfs目录和/mnt中是否都存在.
192.168.1.10是Ubuntu主机的IP地址。或者使用localhost(127.0.0.1)测试

$ sudo mount -t nfs 192.168.1.100:~/Code/Projects/som_rk3399_nfs /mnt -o nolock #(注意:这种方式是不行的,必须使用绝对路径使用~挂载会失败,输出如下的内容:)mount.nfs: access denied by server while mounting localhost:~/Code/Projects/som_rk3399_nfs
$ sudo mount -t nfs localhost:/home/bruce/Code/Projects/som_rk3399_nfs /mnt -o nolock

6.1.6 卸载挂载的共享目录

$ sudo umount /mnt

6.2 在SOM-RK3399开发板上挂载UBuntu18.04上的NFS服务器的共享目录

在SOM-RK3399开发板上,我烧写的是FriendlyELEC系统。

6.2.1 在SOM-RK3399开发板的FriendlyELEC系统上安装NFS服务

$ sudo apt-get update
$ sudo apt-get install nfs-kernel-server

6.2.2 重启NFS服务

pi@SOM-RK3399v2:~$ sudo /etc/init.d/nfs-kernel-server restart
[ ok ] Restarting nfs-kernel-server (via systemctl): nfs-kernel-server.service.

6.2.3 测试和Ubuntu18.0.4的网络是否连通

Ubuntu18.0.4的主机的IP是192.168.1.100,SOM-RK3399板子的IP地址是192.168.1.10,它们之间是通过一根网线连接的。
在SOM-RK339开发板上ping Ubuntu18.04(可以ping通,如下图所示)

6.2.4 将Ubuntu18.0.4上的共享目录som_rk3399_nfs挂载到开发板上

$ mkdir /home/pi/mountHost
$ sudo mount -t nfs 192.168.1.100:/home/bruce/Code/Projects/som_rk3399_nfs /home/pi/mountHost -o nolock

6.2.4 编辑SOM-RK3399的/etc/fstab文件,使开机自动挂载NFS服务器共享目录

默认FriendlyELEC的/etc/fstab文件是空的,现在添加如下内容,使开启SOM-RK3399开发板时自动挂载共享目录

pi@SOM-RK3399v2:~$ cat /etc/fstab
192.168.1.100:/home/bruce/Code/Projects/som_rk3399_nfs /home/pi/mountHost nfs    defaults     0  0pi@SOM-RK3399v2:~$

7. 在SOM-RK3399开发板上安装sshd

pi@SOM-RK3399v2:~$ sudo apt-get install ssh

7.1 重启sshd服务

pi@SOM-RK3399v2:~$ service sshd start
或
/etc/rc.d/init.d/sshd restart

7.2 打开MobaXterm连接开发板


8. 配置Ubuntu18.04上的Qt开发环境

打开Qt Creator选择Tools–>Options

8.1 配置编译器

  • 配置g++编译器
  • 配置gcc编译器

8.2 配置Qt的版本

选择的是自己编译Qt源码安装目录下的qmake

8.3 配置build套件

9. 配置SOM-RK3399板子上的开发环境

9.1 打包交叉编译的Qt5.14.2

bruce@bruce:~/Code/qtsourcecode/shadow_build_qt_5.14.2/sysbase$ ls qt5.14.2_install
bin  doc  include  lib  mkspecs  plugins  qml
bruce@bruce:~/Code/qtsourcecode/shadow_build_qt_5.14.2/sysbase$ tar -cvzf qt5.14.2_install.tar.gz qt5.14.2_install/

9.2 将qt5.14.2_install.tar.gz 拷贝到共享目录

$ cp qt5.14.2_install.tar.gz ~/Code/Projects/som_rk3399_nfs/

9.3 将qt5.14.2_install.tar.gz解压到SOM-RK339开发板上的/opt目录

pi@SOM-RK3399v2:~/mountHost$ sudo tar -xvf qt5.14.2_install.tar.gz -C /optpi@SOM-RK3399v2:~/mountHost$ ls /opt/qt5.14.2_install/
bin  doc  include  lib  mkspecs  plugins  qml

9.4 编辑/etc/profile,配置QT环境变量

将原有内容注释掉,修改为如下内容

# /etc/profile: system-wide .profile file for the Bourne shell (sh(1))
# and Bourne compatible shells (bash(1), ksh(1), ash(1), ...).if [ "${PS1-}" ]; thenif [ "${BASH-}" ] && [ "$BASH" != "/bin/sh" ]; then# The file bash.bashrc already sets the default PS1.# PS1='\h:\w\$ 'if [ -f /etc/bash.bashrc ]; then. /etc/bash.bashrcfielseif [ "`id -u`" -eq 0 ]; thenPS1='# 'elsePS1='$ 'fifi
fiif [ -d /etc/profile.d ]; thenfor i in /etc/profile.d/*.sh; doif [ -r $i ]; then. $ifidoneunset i
fi
#QTDIR=/usr/local/Trolltech/Qt-5.10.0-rk64one
#QT_QPA_PLATFORM=xcb
#QT_QPA_EGLFS_HIDECURSOR=0
#QTWEBENGINE_DISABLE_SANDBOX=1
#QT_QPA_FONTDIR=/usr/share/fonts/truetype/ubuntu-font-family
#QT_QPA_PLATFORM_PLUGIN_PATH=/usr/local/Trolltech/Qt-5.10.0-rk64one/plugins/export QTDIR=/opt/qt5.14.2_install
export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QT_QPA_PLATFORM_PLUGIN_PATH=$QTDIR/plugins
export QT_QPA_PLATFORM=linuxfb
export QT_QPA_FONTDIR=/usr/share/fonts/truetype/ubuntu-font-family

10. 测试

10.1 在Ubuntu18.0.4打开QCreator创建一个测试工程



10.2 在主界面添加一个按钮并实现一个槽用来更改按钮的文本

按钮相应clicked()的槽

void MainWindow::on_testButton_clicked()
{auto curtext = this->ui->testButton->text();if(curtext == tr("点击---"))this->ui->testButton->setText(tr("点击+++"));elsethis->ui->testButton->setText(tr("点击---"));
}

10.3 在Ubuntu18.04上只编译Qt测试工程

执行qmake

编译代码

10.4 将编译成功的可执行文件test_som_rk3399拷贝到共享目录

bruce@bruce:~/Code/Projects/som_rk3399_nfs$ ls
test_som_rk3399

10.5 在SOM-RK3399开发板上执行./test_som_rk3399


[下一页 Qt5.14.2移植到SOM-RK3399开发板上的问题解决办法]

Qt5.14.2移植到SOM-RK3399开发板相关推荐

  1. RK3399应用开发 | 移植libdrm到rk3399开发板(2.4.113)

    一.下载源码 下载地址:https://dri.freedesktop.org/libdrm/. 这里我下载最新的2.4.113版本: wget https://dri.freedesktop.org ...

  2. Qt5.14.2移植到SOM-RK3399开发板上的问题解决办法

    Qt5.14.2移植到SOM-RK3399开发板上的问题解决办法 1. 概述 2. 配置Qt5.9.5 2.1 mkspec配置文件 2.2 配置脚本 2.3 执行make docs时出现的错误 2. ...

  3. 迅为RK3399开发板Debian系统设置开机自启动脚本

    如果想要开机运行某程序,需要在开发板上编辑"/etc/rc.local"文件,在此文件添加你想开机运行的命令即可.这里给大家做一个示范,我们的需求是开机自启动 hello.sh 脚 ...

  4. at91sam9260ek开发板linux移植文档,AT91SAM9260EK开发板 Linux 移植 移植 文档

    AT91SAM9260EK开发板 Linux 移植 移植 文档 AT91SAM9260EKAT91SAM9260EKAT91SAM9260EKAT91SAM9260EK 开发板开发板开发板开发板 Li ...

  5. pycharm调试如何返回上一步_如何在瑞芯微RK3399开发板上调用底层接口技术调试笔记...

    广东RK3399开发板DLT3399A底层接口文档如何调用方法在DLT3399A板卡正面写有GPIO和UART4_1V8丝印的接口,并看到板子反面对应的引脚gpio丝印,选择相对应的gpio控制节点, ...

  6. imx6q 开发板_mplayer移植-迅为IMX6Q开发板

    0 1 mplayer简介 mplayer是一款开源多媒体播放器,以gnu通用公共许可证发布.它资源占用率低,无论是音频还是视频方面,支持的格式相当全面,支持的输出设备也很多,可以在各种主流操作系统中 ...

  7. mysql移植海思_live555 交叉编译移植到海思开发板

    1.首先到它的主页下载一个源码包: http://www.live555.com/liveMedia/public/ 我下载的是latest的,具体什么版本还真不清楚 2.放到linux目录下解压: ...

  8. [长文干货]MicroPython移植到野火STM32F429开发板

    最近通过参考网上的文章,成功将MicroPython移植到野火STM32F429开发板上,给大家分享一下自己的移植过程,可以作为STM32系列移植MicroPY的参考. 1.移植前准备工作 实验环境: ...

  9. 飞凌嵌入式RK3399开发板使用过程中问题实录及解决思路

    飞凌RK3399的开发板,已经推出了一段时间,根据飞凌嵌入式技术服务部统计的客户问题反馈,整理了一份客户在使用RK3399开发板过程中经常遇到的几个问题,并提供了解决思路. RK3399开发板简介: ...

最新文章

  1. 做过十几年程序员,作为当今全世界顶级产品经理,出版第二部重磅作品《启示录2》...
  2. 实验楼第二次试验报告
  3. linux putty 标题栏显示ip putty本地设置 服务器设置
  4. C#异步编程的实现方式(1)——异步委托
  5. 《磨难之间》——刻意设计,缺失核心
  6. python如何创建模块教程_Python创建模块及模块导入的方法
  7. 使用sharepreferce记录数组数据
  8. (软件工程复习核心重点)第六章实现和测试-第二节:软件测试基础
  9. 关于从EXCEL中导入到SQL server中的问题
  10. TransferQueue实现线程通信
  11. 如果彩虹QQ算非法外挂,那么运行在windows上的非微软开发的程序算什么?
  12. 用GA算法设计22个地点之间最短旅程-R语言实现
  13. CentOS和Ubuntu哪个好?
  14. 系统自带不起眼但很强杀毒工具
  15. 举例理解哈夫曼树与哈夫曼编码
  16. 汉诺塔递归算法C++实现
  17. lubuntu xubunut ubuntu kubuntu 区别
  18. mybatis 中between and用法
  19. 网页设计 尺寸 html5,网页设计一般至少设置多少高度?制作网站时网页的尺寸是多少?网页的屏幕尺寸是多少?...
  20. 微信朋友圈视频变长从6秒增加为10秒

热门文章

  1. Snapchat创始人与扎克伯格的战争内幕 孙子兵法的精髓
  2. 十大创客与微软智能云Azure
  3. 发布一个最新版coos核心代码
  4. 中国第三方输入法行业发展趋势如何?看这篇报告就够了
  5. C# 异步编程模式 APM、EAP、TPL
  6. 2014年:互联网IT待遇【转载】
  7. Gis画弧线,关系图
  8. html花瓣旋转成花,CSS 风车(花瓣)旋转动画圆角
  9. 线条方面的几个英文单词
  10. 如何发布一个外网可以访问的网站