• 解决交叉编译的依赖问题


    • 解决找不到库的问题
    • 发现有些可执行文件需要依赖某些文件,但依赖的文件是链接方式

    直接把链接方式放到板子上肯定不行,解决办法:把链接对应的源文件放到板子上,然后把源文件改名为链接的名字。

    • 比如 BasicService依赖的文件如下

    •  查看库文件:发现libstdc++.so.6是链接文件,真正的文件是libstdc++.so.6.0.28【因为最大是 21M】

    • 把libstdc++.so.6.0.28放到板子上,然后把libstdc++.so.6.0.28改名为libstdc++.so.6,然后程序就可以跑起来。

    参考:交叉编译及运行_L7256的博客-CSDN博客第三点

    • 编译器跑不起来(本质:可执行程序依赖的库找不到)

    在交叉编译的时候发现:

    1. pc123@ubuntu:~/Public/workspace/toolchain/AG550/linuxptp$ make
    2. DEPEND ts2phc_pps_source.c
    3. /bin/sh: 3: /home/pc123/Public/workspace/toolchain/AG550/ql-ag550qcn-le20-gcc820-v1-toolchain/gcc/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-gcc: not found

    于是ldd 编译器发现:依赖的库在本地一个没有的位置/opt/ql_crosstools/

    ===》解决办法:2选1

    (1)在本地创建/opt/ql_crosstools这个目录,并按照图中的路径软连接到ld-linux-x86-64.so.2

    (2) 让arm-oe-linux-gnueabi-gcc新建一个软连接到linux-x86-64.so.2 【即执行./ql_relocate_sdk.sh】

    • 交叉编译关于fatal error: stdio.h: No such file or directory #include的问题

    1. pc123@ubuntu:~/Public/workspace/toolchain/AG550/linuxptp$ make
    2. "/home/pc123/Public/workspace/toolchain/AG550/ql-ag550qcn-le20-gcc820-v1-toolchain/gcc/usr/bin/arm-oe-linux-gnueabi/"arm-oe-linux-gnueabi-gcc -Wall -DVER=3.1-00161-g6c42e5c-dirty -D_GNU_SOURCE -DHAVE_CLOCK_ADJTIME -DHAVE_POSIX_SPAWN -DHAVE_ONESTEP_SYNC -c -o ptp4l.o ptp4l.c
    3. In file included from /home/pc123/Public/workspace/toolchain/AG550/ql-ag550qcn-le20-gcc820-v1-toolchain/gcc/usr/lib/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/include-fixed/syslimits.h:7,
    4. from /home/pc123/Public/workspace/toolchain/AG550/ql-ag550qcn-le20-gcc820-v1-toolchain/gcc/usr/lib/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/include-fixed/limits.h:34,
    5. from ptp4l.c:20:
    6. /home/pc123/Public/workspace/toolchain/AG550/ql-ag550qcn-le20-gcc820-v1-toolchain/gcc/usr/lib/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/8.2.0/include-fixed/limits.h:194:61: error: no include path in which to search for limits.h
    7. #include_next /* recurse down to the real one */
    8. ^
    9. ptp4l.c:21:10: fatal error: stdio.h: No such file or directory
    10. #include
    11. ^~~~~~~~~
    12. compilation terminated.
    13. <builtin>: recipe for target 'ptp4l.o' failed
    14. make: *** [ptp4l.o] Error 1

    参考:交叉编译及运行_L7256的博客-CSDN博客 的第一点

  • 相关阅读:
    【 C++ 】IO流
    域名解析DNS:如何查询txt类型的解析记录
    Mybatis概述
    不同数据的遍历(for in与for of)
    Docker部署Nacos
    ios的info.plist 配置
    基于servlet+jsp的在线书店销售系统
    儿童玩具和儿童用品美国CPC认证ASTM测试CPSIA标准大合集
    在Navicat工具中如何利用SQL语句和可视化界面这两种方法来创建数据表
    P3008 [USACO11JAN]Roads and Planes G (SPFA + SLF优化)
  • 原文地址:https://blog.csdn.net/m0_37844072/article/details/126290701