龙芯派二代2k1000la开发——交叉编译环境搭建(C/C++和Qtcreator)

发布时间 2023-04-19 15:08:16作者: Lumen3ever

龙芯派二代2k1000la开发——交叉编译环境搭建(C/C++和Qtcreator)

一、下载脚本文件

这个脚本文件可以在龙芯技术支持QQ群中找到

二、编译C/C++程序

在下载目录下执行该脚本

./poky-glibc-x86_64-my-qt5-image-loongarch64-ls3a5000-toolchain-3.3+snapshot.sh

Bash

设置环境变量

source /opt/poky/3.3+snapshot/environment-setup-loongarch64-poky-linux

Bash

之后即可使用/opt/poky/3.3+snapshot/sysroots/x86_64-pokysdk-linux/usr/bin/loongarch64-poky-linux/loongarch64-poky-linux-gcc编译c程序

/opt/poky/3.3+snapshot/sysroots/x86_64-pokysdk-linux/usr/bin/loongarch64-poky-linux/loongarch64-poky-linux-gcc -o hello hello.c

Bash

三、QT Creator 交叉开发环境搭建

  1. 选择菜单栏的工具-选项

  1. 设置qmake,如图Kits->QT versions 里添加qmke路径

/opt/poky/3.3+snapshot/sysroots/x86_64-pokysdk-linux/usr/bin/qmake

  1. 设置gcc和g++,如图Kits->编译器里添加gcc路径:
    /opt/poky/3.3+snapshot/sysroots/x86_64-pokysdk-linux/usr/bin/loongarch64-pokylinux/loongarch64-poky-linux-gcc

g++路径 : /opt/poky/3.3+snapshot/sysroots/x86_64-pokysdk-linux/usr/bin/loongarch64-poky-linux/loongarch64-poky-linux-g++

  1. 设置Kits,如图Kits->Kits 里添加sysroot路径及上面设置的QMAKE、
    gcc、g++,sysroot路径:

/opt/poky/3.3+snapshot/sysroots/x86_64-pokysdk-linux

  1. 设置完成后保存,编译工程时选择Loong即可

四、编译QT程序

source /opt/poky/3.3+snapshot/environment-setup-loongarch64-poky-linux

Bash

#进入需要编译的程序目录,命令行编译
qmake
make

Bash

注意在运行前需要先source一下,指定使用的编译器。

五、在龙芯派上运行可执行文件

第四步编译出来的整个文件夹传到龙芯派上,在龙芯派上执行可能会遇到如下报错:

明明有文件,但是运行的时候就说找不到。

原因是动态链接库的问题,在编译的文件里的动态库链接路径与开发板的系统不一样,可以在系统里用ln建立软链接

参考这篇文章:

https://cloud.tencent.com/developer/article/1720730#:~:text=%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3linux%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E6%8F%90%E7%A4%BANo%20such%20file%20or%20directory%E7%9A%84%E8%83%8C%E5%90%8E%E5%8E%9F%E5%9B%A0%201%20%E6%96%87%E4%BB%B6%E6%9C%AC%E8%BA%AB%E4%B8%8D%E5%AD%98%E5%9C%A8%E6%88%96%E8%80%85%E6%96%87%E4%BB%B6%E6%8D%9F%E5%9D%8F,2%20%E6%97%A0%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90%20%EF%BC%88chmod%20777%20xxx%EF%BC%89%203%20%E7%B3%BB%E7%BB%9F%E4%BD%8D%E6%95%B0%E4%B8%8E%E7%A8%8B%E5%BA%8F%E4%BD%8D%E6%95%B0%E4%B8%8D%E5%90%8C书签:深入理解linux执行文件提示No such file or directory的背后原因 - 腾讯云开发者社区-腾讯云

在上位机目录下执行

readelf -l test | grep interpreter

Bash

可以看到:

需要动态链接库/lib/ld.so.1

于是我将板子上/lib64下的ld.so.1移动到/lib文件夹下,成功在龙芯派上运行程序。