# 编辑香橙派的 SSH 配置
sudo nano /etc/ssh/sshd_config
# 找到并修改
X11Forwarding no
# 重启 SSH 服务
sudo systemctl restart ssh
# 编辑香橙派的 SSH 配置
sudo nano /etc/ssh/sshd_config
# 找到并修改
X11Forwarding no
# 重启 SSH 服务
sudo systemctl restart ssh
执行如下sh文件
#!/bin/bash
# 用法: sudo ./fix_wifi.sh [SSID] [PASSWORD]
set -e
IF=”wlx7822884b2787″
SSID=”${1:-rtlwap}”
PASSWORD=”${2:-}”
echo “=== 1) 基本信息 ===”
echo “日期: $(date)”
uname -r
echo “—— lsmod 相关模块 ——”
lsmod | egrep -i ‘wl|rtl|8812|88xx|88|rtw|wlanuav’ || true
echo “—— ifconfig/ip link ——”
ip -c addr show “$IF” || ip -c link show
echo “—— iw dev (无线设备) ——”
iw dev || true
echo
echo “=== 2) 查看内核日志(相关条目) ===”
sudo dmesg | egrep -i “$IF|0bda|a81a|rtl88|8812|88×2|rtw|wlanuav|usb” | tail -n 200 || true
echo
echo “=== 3) 确保 RFKILL 未阻塞 ===”
rfkill list || true
echo “尝试解除软件阻塞…”
sudo rfkill unblock all || true
sleep 1
rfkill list || true
echo
echo “=== 4) 关闭驱动/设备的省电(iw)并设置国家码 ===”
sudo iw reg set SG || true
sudo iw dev “$IF” set power_save off || true
echo
echo “=== 5) 让 NetworkManager 管理该接口 ===”
sudo nmcli device set “$IF” managed yes || true
sudo systemctl restart NetworkManager
sleep 1
nmcli device status
echo
echo “=== 6) 重新加载模块(如果模块不稳定可尝试) ===”
# 尝试找到模块并重载(安全尝试)
MODNAME=$(lsmod | egrep -o ‘rtl[[:alnum:]_]*|88[[:alnum:]_]*|wl[a-z0-9_]*’ | head -n1 || true)
if [ -n “$MODNAME” ]; then
echo “检测到模块: $MODNAME — 尝试重载”
sudo modprobe -r “$MODNAME” 2>/dev/null || true
sleep 1
sudo modprobe “$MODNAME” 2>/dev/null || true
else
echo “未检测到可疑模块名称,跳过自动重载”
fi
sleep 1
echo
echo “=== 7) 重置接口并扫描可用 Wi‑Fi ===”
sudo ip link set “$IF” down || true
sleep 1
sudo ip link set “$IF” up || true
sleep 1
echo “扫描(ifname=$IF)…”
sudo nmcli device wifi rescan ifname “$IF” || true
sudo nmcli device wifi list ifname “$IF” || true
echo
echo “=== 8) 清理旧同名连接并尝试连接 ===”
# 删除所有同名的 rtlwap 连接,避免冲突
for id in $(nmcli -t -f NAME,UUID connection show | awk -F: -v s=”$SSID” ‘$1 ~ “^”s {print $2}’); do
echo “删除旧连接 $id”
sudo nmcli connection delete “$id” || true
done
if [ -z “$PASSWORD” ]; then
echo “未提供密码,尝试无密码连接(若是有密码请以第二个参数提供)”
sudo nmcli device wifi connect “$SSID” ifname “$IF” || true
else
echo “尝试连接 SSID=’$SSID’(ifname=$IF)…”
sudo nmcli device wifi connect “$SSID” password “$PASSWORD” ifname “$IF” || true
fi
echo
echo “=== 9) 连接状态与最后日志摘要 ===”
nmcli device status
nmcli connection show –active || true
echo “—– dmesg 相关(尾部 200 行) —–”
sudo dmesg | tail -n 200
echo “如果连接失败,请把上面输出全贴过来(特别是 dmesg 与 nmcli device status)”
1.下载 git clone https://gitee.com/orangepi-xunlong/opi-bkimg.git
2.进入当前目录下的 opi-bkimg
3.sudo ./opi-bkimg
4.生成img文件在/mnt文件夹
0.修改密码
sudo passwd root
sudo passwd orangepi
nmcli connection delete uuid XXXX
1.连接无线
sudo nmcli –ask dev wifi connect mini_5G password fsw2021fsw ifname wlan0
sudo nmcli –ask dev wifi connect TP-LINK_7787 password yyxlx18396870603 ifname wlan0
sudo nmcli –ask dev wifi connect mini_5G password fsw2021fsw ifname wlx7822884b2787
sudo nmcli –ask dev wifi connect rtlwap password mqdqxyg1qy ifname wlx7822884b2787
sudo nmcli dev wifi connect
2.安装ssh
sudo apt-get install openssh-server
3.安装vnc
sudo set_vnc.sh
连接VNC 端口号为5901
4.安装qt
sudo install_qt.sh
5.
1.加载ko模块
sudo insmod wlanrtl.ko rtw_country_code=”CN” 或者 insmod wlanrtl.ko 并且 echo 0x3E > /proc/net/rtl88x2eu/wlx7822884b2786/chan_plan
2.确保hostapd文件夹是否存在,如不存在新建文件
sudo mkdir -p /var/run/hostapd
3.进入cd /usr/sbin
4.在/usr/sbin文件夹下新建1.config文件
————-1.config————–
interface=wlx7822884b2786
ctrl_interface=/var/run/hostapd
ssid=rtlwap
channel=36
wpa=2
wpa_passphrase=12345678
driver=nl80211
beacon_int=100
hw_mode=a
ieee80211n=1
wme_enabled=1
ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
wpa_key_mgmt=WPA-PSK
wpa_pairwise=CCMP
4.执行sudo ./hostapd 1.config -B
5.如无IP地址,sudo ifconfig wlx7822884b2786 192.168.16.1
内核中执行
sudo make mrproper # 清理源码树
sudo make menuconfig ARCH=arm64 CROSS_COMPILE=/opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-
sudo make prepare ARCH=arm64 CROSS_COMPILE=/opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu- # 准备编译环境,包括生成头文件
sudo make scripts ARCH=arm64 CROSS_COMPILE=/opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu- # 生成 scripts,包括 genheaders 等工具
sudo make modules_prepare ARCH=arm64 CROSS_COMPILE=/opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu- modules_prepare
驱动中执行
make ARCH=arm64 CROSS_COMPILE=/opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-
————————–makefile添加————————————–
CONFIG_PLATFORM_RK3566 = y
ifeq ($(CONFIG_PLATFORM_RK3566), y)
EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT -DCONFIG_RTW_TX_NPATH_EN
ARCH := arm64
CROSS_COMPILE :=/home/yue/sdk/orangepi-build/toolchains/gcc-arm-11.2-2022.02-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-
KSRC := /home/yue/sdk/orangepi-build/kernel/orange-pi-5.10-rk35xx
MODULE_NAME := wlanuav
endif
1.修改bootargs
①修改u-boot
②修改dts文件的
chosen: chosen {
bootargs = “earlycon=uart8250,mmio32,0xfe660000 console=ttyFIQ0 isolcpus=3”;
};
2.隔离cpu,不让程序运行在CPU3上 isolcpus=3
3.查看bootargs cat /proc/cmdline
—————————.pro———————————–
TEMPLATE = app
CONFIG += console c++11
CONFIG -= qt
# 交叉编译工具链配置
# 请根据你的交叉编译工具链调整这些设置
QMAKE_CC = /home/yue/buildroot/buildroot-2022.05/output/host/bin/aarch64-buildroot-linux-gnu-gcc
QMAKE_CXX = /home/yue/buildroot/buildroot-2022.05/output/host/bin/aarch64-buildroot-linux-gnu-g++
QMAKE_LINK = /home/yue/buildroot/buildroot-2022.05/output/host/bin/aarch64-buildroot-linux-gnu-g++
QMAKE_AR = /home/yue/buildroot/buildroot-2022.05/output/host/bin/aarch64-buildroot-linux-gnu-ar
QMAKE_OBJCOPY = /home/yue/buildroot/buildroot-2022.05/output/host/bin/aarch64-buildroot-linux-gnu-objcopy
QMAKE_STRIP = /home/yue/buildroot/buildroot-2022.05/output/host/bin/aarch64-buildroot-linux-gnu-strip
# GTK 配置
PKGCONFIG = /home/yue/buildroot/buildroot-2022.05/output/host/bin/pkg-config
PKGCONFIG_PATH =/home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/pkgconfig
PKG_CONFIG_PATH =/home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/pkgconfig
PKGCONFIG += gtk+-3.0
PKGCONFIG += gdk-3.0
PKGCONFIG += gdk-pixbuf-2.0
PKGCONFIG += glib-2.0
PKGCONFIG += pango
PKGCONFIG += harfbuzz
PKGCONFIG += cairo
PKGCONFIG += atk
PKGCONFIG += gobject-2.0
QMAKE_LFLAGS = -L /home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/lib64
# 头文件和库路径(请根据实际路径调整)
INCLUDEPATH += /home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/gtk-3.0
INCLUDEPATH += /home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/glib-2.0
INCLUDEPATH += /home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib/glib-2.0/include
INCLUDEPATH += /home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/pango-1.0
INCLUDEPATH += /home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/harfbuzz
INCLUDEPATH += /home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/cairo
INCLUDEPATH += /home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/gdk-pixbuf-2.0
INCLUDEPATH += /home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/include/atk-1.0
#在如下目录中,l代表lib缩写?
LIBS += -L /home/yue/buildroot/buildroot-2022.05/output/host/aarch64-buildroot-linux-gnu/sysroot/usr/lib \
-lgdk_pixbuf-2.0 \
-lgdk-3 \
-lgtk-3 \
-lglib-2.0 \
-lpango-1.0 \
-lharfbuzz \
-lcairo-gobject \
-lcairo \
-latk-1.0 \
-lgobject-2.0 \
-latk-1.0
INCLUDEPATH += /home/yue/openCV/install-arm-gtk/include\
/home/yue/openCV/install-arm-gtk/include/opencv4 \
/home/yue/openCV/install-arm-gtk/include/opencv2
LIBS += /home/yue/openCV/install-arm-gtk/lib/libopencv_highgui.so \
/home/yue/openCV/install-arm-gtk/lib/libopencv_core.so \
/home/yue/openCV/install-arm-gtk/lib/libopencv_imgproc.so \
/home/yue/openCV/install-arm-gtk/lib/libopencv_imgcodecs.so
# 源文件
SOURCES += main.cpp
# 输出文件
TARGET = gtk_example
—————————————–main.cpp———————————————–
#include
#include
#include
#include
using namespace cv;
// 窗口中的图片位置和缩放比例
static int img_x = 100;
static int img_y = 100;
static double scale = 1.0;
static int start_x = 0;
static int start_y = 0;
static bool dragging = false;
static bool in_image = false;
static Mat bg_img;
static Mat fg_img;
// 检查鼠标是否在图片范围内
bool is_mouse_in_image(int mouse_x, int mouse_y) {
return (mouse_x >= img_x && mouse_x <= (img_x + fg_img.cols * scale) &&
mouse_y >= img_y && mouse_y <= (img_y + fg_img.rows * scale));
}
// 绘制图片到 GTK 窗口
static gboolean on_draw_event(GtkWidget *widget, cairo_t *cr) {
if (bg_img.empty() || fg_img.empty()) return FALSE;
// 将背景图像转换为 Cairo 图像
GdkPixbuf *bg_pixbuf = gdk_pixbuf_new_from_data(
(const guchar*)bg_img.data,
GDK_COLORSPACE_RGB,
false,
8,
bg_img.cols,
bg_img.rows,
bg_img.step,
NULL,
NULL
);
// 将前景图像转换为 Cairo 图像
GdkPixbuf *fg_pixbuf = gdk_pixbuf_new_from_data(
(const guchar*)fg_img.data,
GDK_COLORSPACE_RGB,
false,
8,
fg_img.cols,
fg_img.rows,
fg_img.step,
NULL,
NULL
);
// 绘制背景图像
gdk_cairo_set_source_pixbuf(cr, bg_pixbuf, 0, 0);
cairo_paint(cr);
// 绘制前景图像,应用缩放比例
cairo_translate(cr, img_x, img_y);
cairo_scale(cr, scale, scale);
gdk_cairo_set_source_pixbuf(cr, fg_pixbuf, 0, 0);
cairo_paint(cr);
g_object_unref(bg_pixbuf);
g_object_unref(fg_pixbuf);
return FALSE;
}
// 处理鼠标按下事件
static gboolean on_button_press_event(GtkWidget *widget, GdkEventButton *event) {
if (event->button == GDK_BUTTON_PRIMARY) {
if (in_image) {
dragging = true;
start_x = event->x – img_x;
start_y = event->y – img_y;
}
}
return FALSE;
}
// 处理鼠标释放事件
static gboolean on_button_release_event(GtkWidget *widget, GdkEventButton *event) {
if (event->button == GDK_BUTTON_PRIMARY) {
dragging = false;
}
return FALSE;
}
// 处理鼠标移动事件
static gboolean on_motion_notify_event(GtkWidget *widget, GdkEventMotion *event) {
if (dragging) {
// 计算新的位置
int new_img_x = event->x – start_x;
int new_img_y = event->y – start_y;
// 限制图片B在背景图片A的范围内
new_img_x = std::max(0, std::min(new_img_x, bg_img.cols – static_cast
new_img_y = std::max(0, std::min(new_img_y, bg_img.rows – static_cast
img_x = new_img_x;
img_y = new_img_y;
gtk_widget_queue_draw(widget); // 触发重绘
} else {
in_image = is_mouse_in_image(event->x, event->y);
}
return FALSE;
}
// 缩放图片B
static void on_zoom_in(GtkWidget *widget, gpointer data) {
scale += 0.1;
gtk_widget_queue_draw(GTK_WIDGET(data));
}
static void on_zoom_out(GtkWidget *widget, gpointer data) {
scale = std::max(0.1, scale – 0.1);
gtk_widget_queue_draw(GTK_WIDGET(data));
}
int main(int argc, char *argv[]) {
gtk_init(&argc, &argv);
// 加载背景图片
bg_img = imread(“/home/orangepi/xy.jpg”, IMREAD_COLOR);
if (bg_img.empty()) {
g_print(“Failed to load background image\n”);
return -1;
}
// 加载前景图片
fg_img = imread(“/home/orangepi/monkey.png”, IMREAD_COLOR);
if (fg_img.empty()) {
g_print(“Failed to load foreground image\n”);
return -1;
}
// 创建 GTK 窗口
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 5);
GtkWidget *drawing_area = gtk_drawing_area_new();
GtkWidget *zoom_in_button = gtk_button_new_with_label(“Zoom In”);
GtkWidget *zoom_out_button = gtk_button_new_with_label(“Zoom Out”);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_box_pack_start(GTK_BOX(vbox), drawing_area, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox), zoom_in_button, FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(vbox), zoom_out_button, FALSE, FALSE, 0);
gtk_widget_set_size_request(drawing_area, bg_img.cols, bg_img.rows);
// 连接绘制事件
g_signal_connect(G_OBJECT(drawing_area), “draw”, G_CALLBACK(on_draw_event), NULL);
// 连接鼠标事件
g_signal_connect(G_OBJECT(drawing_area), “button-press-event”, G_CALLBACK(on_button_press_event), NULL);
g_signal_connect(G_OBJECT(drawing_area), “button-release-event”, G_CALLBACK(on_button_release_event), NULL);
g_signal_connect(G_OBJECT(drawing_area), “motion-notify-event”, G_CALLBACK(on_motion_notify_event), NULL);
gtk_widget_add_events(drawing_area, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_POINTER_MOTION_MASK);
// 连接缩放按钮事件
g_signal_connect(G_OBJECT(zoom_in_button), “clicked”, G_CALLBACK(on_zoom_in), drawing_area);
g_signal_connect(G_OBJECT(zoom_out_button), “clicked”, G_CALLBACK(on_zoom_out), drawing_area);
g_signal_connect(window, “destroy”, G_CALLBACK(gtk_main_quit), NULL);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
——————–*.pro—————————–
添加
INCLUDEPATH += /home/yue/openCV/install-arm/include\
/home/yue/openCV/install-arm/include/opencv4 \
/home/yue/openCV/install-arm/include/opencv2
LIBS += /home/yue/openCV/install-arm/lib/libopencv_highgui.so \
/home/yue/openCV/install-arm/lib/libopencv_core.so \
/home/yue/openCV/install-arm/lib/libopencv_imgproc.so \
/home/yue/openCV/install-arm/lib/libopencv_imgcodecs.so
———————mainwindow.h————————-
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include
#include
#include
#include
#include
#include
#include
QT_BEGIN_NAMESPACE
namespace Ui {
class MainWindow;
}
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
private:
QImage cvMatToQImage(const cv::Mat& mat);
};
#endif // MAINWINDOW_H
——————-main.cpp————————————-
#include “mainwindow.h”
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
—————————–mainwindow.h———————-
#include “mainwindow.h”
#include “ui_mainwindow.h”
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
cv::Mat image = cv::Mat::zeros(300, 600, CV_8UC3);
// 设置文本内容、字体、大小、颜色和厚度
std::string text = “Rotated Text”;
int fontFace = cv::FONT_HERSHEY_SIMPLEX;
double fontScale = 1.0;
int thickness = 2;
cv::Scalar color(255, 255, 255); // 白色
// 获取文本大小
int baseline = 0;
cv::Size textSize = cv::getTextSize(text, fontFace, fontScale, thickness, &baseline);
// 计算文本位置(中心对齐)
cv::Point textOrg((image.cols – textSize.width) / 2,
(image.rows + textSize.height) / 2);
// 创建旋转矩阵
double angle = 45; // 旋转角度
cv::Mat rotMat = cv::getRotationMatrix2D(textOrg, angle, 1.0);
// 绘制旋转文本
cv::putText(image, text, textOrg, fontFace, fontScale, color, thickness, cv::LINE_AA);
// 应用旋转变换
cv::warpAffine(image, image, rotMat, image.size());
// 将OpenCV图像转换为QImage
QImage qImage = cvMatToQImage(image);
// 在Qt中显示图像
ui->label->setPixmap(QPixmap::fromImage(qImage));
ui->label->show();
}
MainWindow::~MainWindow()
{
delete ui;
}
QImage MainWindow:: cvMatToQImage(const cv::Mat& mat)
{
if (mat.channels() == 3) {
// Convert the image to RGB
cv::Mat rgb;
cv::cvtColor(mat, rgb, cv::COLOR_BGR2RGB);
return QImage((const unsigned char*)(rgb.data),
rgb.cols, rgb.rows,
QImage::Format_RGB888);
} else {
return QImage((const unsigned char*)(mat.data),
mat.cols, mat.rows,
QImage::Format_Grayscale8);
}
}
1.下载源码
http://qt-mirror.dannhauer.de/archive/qt/5.15/5.15.2/single/
2.解压
tar -xvf xxxx
3.在源码根目录下放如autoconfig.sh ,注意sysroot ,可能需要添加-feature-library 选项
./configure \
-prefix /opt/qt-5.15.2 \
-release \
-feature-library \
-opensource \
-skip qtwayland \
-skip qtlocation \
-skip qtscript \
-xplatform linux-aarch64-gnu-g++ \
-sysroot /opt/atk-dlrk356x-toolchain/aarch64-buildroot-linux-gnu/sysroot/ \
-make libs \
-optimized-qmake \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-pkg-config \
-no-separate-debug-info \
-pch \
-shared \
-qt-libjpeg \
-qt-zlib \
-qt-libpng
另外一种测试
./configure \
-prefix /opt/qt-5.15.2 \
-opensource -confirm-license \
-release \
-strip \
-shared \
-xplatform linux-aarch64-gnu-g++ \
-optimized-qmake \
-c++std c++11 \
–rpath=no \
-pch \
-skip qt3d \
-skip qtactiveqt \
-skip qtandroidextras \
-skip qtcanvas3d \
-skip qtconnectivity \
-skip qtdatavis3d \
-skip qtdoc \
-skip qtgamepad \
-skip qtlocation \
-skip qtmacextras \
-skip qtnetworkauth \
-skip qtpurchasing \
-skip qtremoteobjects \
-skip qtscript \
-skip qtscxml \
-skip qtsensors \
-skip qtspeech \
-skip qtsvg \
-skip qttools \
-skip qttranslations \
-skip qtwayland \
-skip qtwebengine \
-skip qtwebview \
-skip qtwinextras \
-skip qtx11extras \
-skip qtxmlpatterns \
-make libs \
-make examples \
-nomake tools -nomake tests \
-gui \
-widgets \
-dbus-runtime \
–glib=no \
–iconv=no \
–pcre=qt \
–zlib=qt \
-no-openssl \
–freetype=qt \
–harfbuzz=qt \
-no-opengl \
-linuxfb \
–xcb=no \
–libpng=qt \
–libjpeg=qt \
–sqlite=qt \
-plugin-sql-sqlite \
-recheck-all
chmox +x autoconfig.sh
./autoconfig.sh
4.修改 qtbase/mkspecs/linux-aarch64-gnu-g++/qmake.conf
QMAKE_CC = /opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-gcc
QMAKE_CXX = /opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-g++
QMAKE_LINK = /opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-g++
QMAKE_LINK_SHLIB = /opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-g++
# modifications to linux.conf
QMAKE_AR = /opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-ar cqs
QMAKE_OBJCOPY = /opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-objcopy
QMAKE_NM = /opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-nm -P
QMAKE_STRIP = /opt/atk-dlrk356x-toolchain/bin/aarch64-buildroot-linux-gnu-strip
4.1 修改
src/corelib/global/qglobal.h 里添加limits头文件
# include
5.sudo make -j4
6.sudo make install
7.完成后应该在/opt/atk-dlrk356x-toolchain/aarch64-buildroot-linux-gnu/sysroot/opt下有qt5.15.2目录
8.将qt5.15.2打包传到开发板
9.将解压后的qt-5.15.2/lib目录添加到开发板的LD_LIBRARY_PATH环境量中