• Linux开发环境配置(持续更新....)


    基于:韦东山IMX6ULL_PRO开发板
    此篇记录一下自己配置开发环境的繁琐过程。
    
    • 1
    • 2

    一、USB 网卡直连配置网络

    1、连接方式

    在这里插入图片描述

    2、Windows的ip设置

    我使用的是ASIX AX88772C usb网卡。
    在这里插入图片描述
    接入电脑后进入网络适配器找到该网卡对其ipv4进行更改。即:
    在这里插入图片描述
    这就完成了对Windows的ip网络的设置了。ip地址为192.168.5.10

    3、 虚拟机配置

    进入虚拟机页面后,编辑>虚拟网络编辑器>更改设置>还原默认设置>设置桥接模式(桥接至ASIX AX88772C)>应用>确定。即:
    在这里插入图片描述

    4、Ubuntu网络设置

    配置网络适配器为桥接模式后,需要进入 ubuntu 手动设置默认网卡的 IP 地址为静态 IP。打开 系统 Setting。找到Network>找到ens38的字样>点击设置按键进入页面>点击 Manual(设置ip)>设置成如下ip地址。即:
    在这里插入图片描述
    之后保存退出即可。

    5、开发板网络设置

    设置开发板ip地址我们一般使用永久生效的方式。即:

    /****第一步*****/
    指令:vi /etc/network/interfaces
    /*****第二步****/  复制指令
    auto lo
    iface lo inet loopback
    auto eth0
    iface eth0 inet static
     address 192.168.5.9
     netmask 255.255.255.0
     gateway 192.168.5.1
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    即:
    在这里插入图片描述

    这样就完成了开发板的ip设置。

    6、验证(ping网络、挂载网络)

    ping时一般使用该指令ping ip地址,例 ping 192.168.5.10
    挂载网络是很经常使用的。指令:

    mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
    
    • 1

    二、安装交叉编译工具链

    交叉编译工具链用来在Ubuntu主机上编译应用程序,而这些应用程序是在ARM等其他平台上运行。设置交叉编译工具主要是设置PATH, ARCH和CROSS_COMPILE三个环境变量。
    即:
    第一步指令vim ~/.bashrc
    第二步在行尾添加或修改,加上下面几行(第3行第4行为一行命令):

    export ARCH=arm
    export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
    export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin
    
    • 1
    • 2
    • 3

    保存退出即可。

    三、交叉编译程序: freetype

    交叉编译 freetype主要是在图形化编程时常用的。这种方法在编译、安装一些小程序时很有用。
    freetype 依赖于 libpng,libpng 又依赖于 zlib,所以我们应该:先编译安装 zlib,再编译安装 libpng,最后编译安装 freetype。但是,有些工具链里有 zlib, 那就不用编译安装 zlib。
    我们所使用的工具链是arm-buildroot-linux-gnueabihf-,其里面包含了zlib因此不必在去安装zlib

    1、确定头文件和库文件

    执行指令:echo 'main(){}'| arm-buildroot-linux-gnueabihf-gcc -E -v -
    在这里插入图片描述
    这样就找到我们编译器的工具链所依赖的头文件和库文件

    2、安装 libpng

    freetype 依赖于 libpng,所以需要先编译、安装 libpng。命令如下:

    book@PC$ tar xJf libpng-1.6.37.tar.xz
    book@PC$ cd libpng-1.6.37
    book@PC$ ./configure --host=arm-buildroot-linux-gnueabihf --prefix=$PWD/tmp
    book@PC$ make
    book@PC$ make install
    book@PC$ cd tmp
    book@PC$ cp lib/* -rfd /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/
    book@PC$ cp include/* -rf  /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    3、安装freetype

    book@PC$ tar xJf freetype-2.10.2.tar.xz
    book@PC$ cd freetype-2.10.2
    book@PC$ ./configure --host=arm-buildroot-linux-gnueabihf --prefix=$PWD/tmp
    book@PC$ make
    book@PC$ make install
    book@PC$ cd tmp
    book@PC$ cp lib/* -rfd /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/
    book@PC$ cp include/* -rf  /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    四、 编译驱动的内核

    编译驱动时用的内核、开发板上运行到内核,要一致:开发板上运行到内核是出厂时烧录的,你编译驱动时用到内核是你自己编译的,这两个内核不一致时会导致一些问题。所以我们编译驱动程序前,要把自己编译出来到内核放到板子上去,替代原来的内核。

    更换板子上的内核后,板子上的其他驱动也要更换:板子使用新编译出来的内核时,板子上原来的其他驱动也要更换为新编译出来的。所以在编译我们自己的第 1 个驱动程序之前,要先编译内核、模块,并且放到板子上去。

    1、编译内核镜像

    我们在下载好安装包后,执行:

    book@100ask:~$ cd 100ask_imx6ull-sdk/Linux-4.9.88/
    book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make mrproper
    book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make 100ask_imx6ull_defconfig
    book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make zImage -j4
    book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make dtbs
    book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ cp arch/arm/boot/zImage ~/nfs_rootfs
    book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ cp arch/arm/boot/dts/100ask_imx6ull-14x14.dtb ~/nfs_rootfs
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    编译完成后,在arch/arm/boot目录下生成zImage内核文件, 在arch/arm/boot/dts目录下生成设备树的二进制文件100ask_imx6ull-14x14.dtb。把这2个文件复制到/home/book/nfs_rootfs目录下备用。
    即:最后两条指令。

    2、编译安装内核模块

    book@b ook-virtual-machine:~$ cd ~/100ask_imx6ull-sdk/Linux-4.9.88/
    book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ make ARCH=arm CROSS_COMPILE=arm-buildroot-linux-gnueabihf- modules
    
    • 1
    • 2

    如下图,内核模块编译完成后截图
    在这里插入图片描述

    3、装内核模块到 Ubuntu 某个目录下备用

    可以先把内核模块安装到nfs根文件系统(/home/book/nfs_rootfs为安装目录)。
    注意:下面会执行tree命令,如果提示没有该命令,需要执行“sudo apt install tree”命令安装tree工具(前提是Ubuntu能上网)。

    book@book-virtual-machine:~$ cd ~/100ask_imx6ull-sdk/Linux-4.9.88/
    book@100ask:~/100ask_imx6ull-sdk/Linux-4.9.88$ sudo make ARCH=arm INSTALL_MOD_PATH=/home/book/nfs_rootfs modules_install
    
    • 1
    • 2

    安装后的的/home/book/nfs_rootfs/目录结构如下图所示:
    在这里插入图片描述

    4、安装内核和模块到开发板上

    在开发板上执行以下指令:

    1、mount -t nfs -o nolock,vers=3 192.168.5.11:/home/book/nfs_rootfs /mnt
    2、cp /mnt/zImage /boot
    3、cp /mnt/*.dtb /boot
    4、cp /mnt/lib/modules /lib -rfd
    
    • 1
    • 2
    • 3
    • 4

    最后重启开发板(reboot),它就使用新的zImage、dtb、模块了。

    五、交叉编译程序:tslib

    tslib 是一个触摸屏的开源库,可以使用它来访问触摸屏设备,可以给输入设备添加各种“filter”(过滤器,就是各种处理),地址是:http://www.tslib.org/。
    编译 tslib 后,可以得到 libts 库,还可以得到各种工具:较准工具、测试工具。

    安装工具链:

    book@PC$ tar xJf libpng-1.6.37.tar.xz
    book@PC$ cd tslib-1.21
    book@PC$ ./configure --host=arm-buildroot-linux-gnueabihf --prefix=/
    book@PC$ make
    book@PC$ make install DESTDIR=$PWD/tmp
    book@PC$ cd tmp/
    book@PC$ cp include/* /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/include 
    book@PC$ cp -d lib/*so* /home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/arm-buildroot-linux-gnueabihf/sysroot/usr/lib/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    QT实现可拖动自定义控件
    高斯线性模型
    LLaMA参数微调方法
    SpringBoot源码学习四——MVC主流程下
    Python - PEP572: 海象运算符
    计算机组成原理期末复习第三章-3(唐朔飞)
    多线程基础:线程基本概念与线程的创建
    npm安装vuecli出错的处理方法
    2.力扣c++刷题-->移除元素
    畅购商城_第15章-秒杀v-2.0
  • 原文地址:https://blog.csdn.net/weixin_51914919/article/details/126285357