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


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

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

    • 比如 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博客 的第一点

  • 相关阅读:
    天府绿道骑行
    【网络编程开发】4.socket套接字及TCP的实现框架 5.TCP多进程并发
    Text2Cypher:大语言模型驱动的图查询生成
    STM32 USB CDC调试记录
    嵌入式芯片-NE555
    python将二进制转换为32位浮点数float/两个16位整数(高位字/低位字)Uint16转换为32位浮点数float
    这3个高级前端常用的API,有你正在用的吗?
    C#演示单例模式
    springboot校园失物招领网站系统在线视频点播系统毕业设计毕设作品开题报告开题答辩PPT
    【结构体内功修炼】结构体内存对齐(一)
  • 原文地址:https://blog.csdn.net/m0_37844072/article/details/126290701