• gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu交叉编译Arm Linux环境下的身份证读卡器so库操作步骤


    1、配置环境变量

    ①将gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar解压至/home/eastcoms/

    sudo或者root运行命令 :sudo tar -xvf gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar -C /home/eastcoms

    .tar用 -xvf

    .gz用 -zxvf

    .bz2用 -jxvf

    .xz用 -Jxvf

    ②修改环境变量 

     命令:sudo gedit /etc/profile

    在最后面加上:

    export PATH=$PATH:"/home/eastcoms/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin"

    或者:

    export PATH="/home/eastcoms/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH"

    ③使环境变量生效(相当于重启)命令:source /etc/profile

    查看编译器是否存在,以及版本是否和交叉编译链7.5.0一致

    命令:aarch64-linux-gnu-gcc -v  或者 aarch64-linux-gnu-g++ -v

    如果一致,则表示配置成功,可以用交叉编译工具进行编译文件了

    2、交叉编译libusb

    ①下载libusb 然后解压 链接:https://libusb.info/  downloads->latest soruce

    ②配置交叉编译环境和输出目录:

    首先进入libusb文件夹打开终端:

    sudo ./configure --host=aarch64-linux --prefix=/home/eastcoms/libusb --disable-udev CC=/home/eastcoms/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc CXX=/home/eastcoms/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-g++

    其中:

    --host=aarch64-linux表示该软件编译完成后在aarch64-linux平台上运行,其他的还有arm-linux、x86_64-linux等

    --prefix后面为libusb库安装目录/home/eastcoms/libusb

    --disable表示禁用功能

    CC表示指定gcc交叉编译器

    CXX表示指定g++交叉编译器

    ③编译、安装libusb

    命令:make

    命令:make install

    进入/home/eastcoms/libusb查看是否生成include和lib文件夹,进入lib文件夹查看文件 file libusb-1.0.so.0.3.0,可以看到是ARM aarch64的即表示编译成功。

    3、编译读卡代码

    aarch64-linux-gnu-gcc donsee.c dllMain.c utf.c -shared -fPIC -o libdonsee.so -lusb-1.0 -ldl

    aarch64-linux-gnu-gcc donseeTest.c -o output ./libdonsee.so

    如果编译报错,提示找不到libusb库,则需要把编译好的libusb-1.0(含里面的libusb.h)文件夹拷贝到交叉编译器include文件夹里面,拷贝文件夹加上 -r

    cp -r /home/eastcoms/libusb/include/libusb-1.0 /home/eastcoms/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/usr/include

    cp -r /home/eastcoms/libusb/include/libusb-1.0 . (.表示当前目录)

    拷贝libusb-1.0.a 到lib文件夹

    cp /home/eastcoms/libusb/lib/libusb-1.0.* /home/eastcoms/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/usr/lib

    编译完成,file命令可以查看文件类型是 arm aarch64是我们使用的交叉编译链。

    删除文件夹和里面所有文件指令:rm -rf  /home/eastcoms/libusb   删除libusb文件夹和里面文件

  • 相关阅读:
    TikTok心理学:短视频如何触发情感共鸣?
    使用ansible中的playbook
    Ansible role
    第二章 学生指导(04 小学德育 05 小学美育 06 小学生安全与心理健康教育 07 学校与家庭、社会的协调)
    c++实现图书管理系统v1.0
    临界区(critical section 每个线程中访问 临界资源 的那段代码)和互斥锁(mutex)的区别(进程间互斥量、共享内存、虚拟地址)
    SpingBoot之替换容器为Undertow
    记一次 .NET 某企业OA后端服务 卡死分析
    TK爆品剖析 水晶首饰降临节日历持续火爆TikTok,独立站卖到断货
    [附源码]计算机毕业设计校园快递柜存取件系统Springboot程序
  • 原文地址:https://blog.csdn.net/cntianya/article/details/128189618