This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM625:交叉编译并运行 hello_world 时出现问题

Guru**** 2478765 points
Other Parts Discussed in Thread: AM625, SK-AM62B-P1

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1459378/am625-problem-with-crosscompile-and-run-hello_world

器件型号:AM625
主题中讨论的其他器件: SK-AM62B-P1

工具与软件:

您好!

   我正在尝试在我们的定制硬件上交叉编译和运行 hello world rogram。 我可以在器件上编译和运行 hello_world 程序、但如果按照本指南中的步骤操作:"dev.ti.com/.../node 要在器件上交叉编译并运行该程序、则会出现错误。 任何建议。 THX。

-rw-r--r-- 1 root root    0 Dec 17 02:35 candump-2024-12-17_023509.log
-rwxr-xr-x 1 root root  73K Jan  8 06:40 hello_world
drwxr-xr-x 3 root root 4.0K Dec 17 05:26 okan
drwxr-xr-x 2 root root 4.0K Dec 22 07:40 program
root@am62xx-evm:~# ./hello_world 
-sh: ./hello_world: cannot execute: required file not found
root@am62xx-evm:~# 


Okan、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Okan、您能向我们发送完整的链接、以便按照步骤操作吗?

    谢谢!

    Paula.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    https://dev.ti.com/tirex/explore/node?node=A__ATQnwE0K3ox3NhHt8iO5lQ__AM62-ACADEMY__uiYMDcq__LATEST

    顺便说一下、在主机端交叉编译没有问题

    okanercan@okanercan:~/helloWorldTest$ source /home/okanercan/ti-processor-sdk-linux-am62xx-evm-10.01.10.04/linux-devkit/environment-setup
    [linux-devkit]:~/helloWorldTest> ${CC} hello_world.c -o hello_world
    [linux-devkit]:~/helloWorldTest> ls
    hello_world  hello_world.c
    [linux-devkit]:~/helloWorldTest> scp hello_world root@192.168.1.50:~/
    hello_world                                                                                                                                             100%   73KB   2.2MB/s   00:00    
    [linux-devkit]:~/helloWorldTest> 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Okan:

    交叉编译是指在平台上构建程序、该平台具有与程序将在其上运行的平台不同的架构。 因此、您无需在 AM625上"交叉编译"、程序也可以在 AM625上运行。 它应使用本机编译。 请使用参考学院页面中描述的"目标上的本地编译"方法。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我认为有一种误解。 我已经知道交叉编译是什么、感谢 您的解释。 在我的第一条消息中、我提到本机编译正常工作("我可以在器件上编译并运行 hello_world 程序")。  

    让我作更清楚的解释。 在 Ubuntu 主机上、我尝试编译 hello_world.c、将可执行文件传输到 AM625、然后在 AM625上运行。 为此、我按照此链接中提供的步骤操作:
    https://dev.ti.com/tirex/explore/node?node=A__ATQnwE0K3ox3NhHt8iO5lQ__AM62-ACADEMY__uiYMDcq__LATEST

    此部分是 Ubuntu

    okanercan@OkanERCANPHN:~/projects$ source /home/okanercan/ti-processor-sdk-linux-am62xx-evm-10.01.10.04/linux-devkit/environment-setup
    [linux-devkit]:~/projects> echo ${CC}
    aarch64-oe-linux-gcc --sysroot=/home/okanercan/ti-processor-sdk-linux-am62xx-evm-10.01.10.04/linux-devkit/sysroots/aarch64-oe-linux
    [linux-devkit]:~/projects> ${CC} hello_world_me.c -o helloWorldProgram
    [linux-devkit]:~/projects> scp helloWorldProgram root@192.168.1.50:~/
    helloWorldProgram                                                                                                                  100%   73KB 940.8KB/s   00:00    
    [linux-devkit]:~/projects> 



    我打印了{CC}、以确保我仍在 Ubuntu 中

    [linux-devkit]:~/projects> echo ${CC}
    aarch64-oe-linux-gcc --sysroot=/home/okanercan/ti-processor-sdk-linux-am62xx-evm-10.01.10.04/linux-devkit/sysroots/aarch64-oe-linux

    我使用此命令将程序文件传输到器件  

    [linux-devkit]:~/projects> scp helloWorldProgram root@192.168.1.50:~/

     

    这是我的设备控制台的输出:

    root@am62xx-evm:~# ls -lh
    total 160K
    -rw-r--r-- 1 root root    0 Dec 17 02:35 candump-2024-12-17_023509.log
    -rwxr-xr-x 1 root root  73K Jan  8 14:52 helloWorldProgram
    -rwxr-xr-x 1 root root  73K Jan  8 07:17 hello_world
    drwxr-xr-x 3 root root 4.0K Dec 17 05:26 okan
    drwxr-xr-x 2 root root 4.0K Dec 22 07:40 program
    root@am62xx-evm:~# ./helloWorldProgram
    -sh: ./helloWorldProgram: cannot execute: required file not found




    SDK 版本: TI-PROCESSOR-SDK-LINUX-am62xx-EVM-10.01.10.04
    顺便说一下、这是 WSL Ubuntu、我还尝试了另一台仅为 Ubuntu 的计算机。
    我不知道我缺少什么,只有几个步骤。 我不知道需要执行哪些文件 helloWorldProgram。

    我想简单地解释一下我要做什么。 我将使用我的定制电路板和 AM6254处理器开发一个器件。 我使用最新的 SDK 版本(10.01.10.04)构建了内核和文件系统、并添加了 Flutter 支持。 我可以为 HMI 运行 Flutter 前端应用程序。 现在、我正在处理后端程序。 它将从 CAN 总线、RS485和以太网等不同串行总线的传感器收集数据。 该程序将在 LCD 上存储、监视和显示数据。 这是开发后端程序的第一步。  成功编译 hello_world 程序后、我将致力于创建一个 Makefile 来简化项目编译、将有许多源文件。



    谢谢你。
    Okan、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Okan:

    [quote userid="70894" url="~/support/processors-group/processors/f/processors-forum/1459378/am625-problem-with-crosscompile-and-run-hello_world 我正在尝试在我们的定制硬件上交叉编译和运行 hello world rograms。

    抱歉、我被这封邮件弄糊涂了、以为您在 AM625电路板上进行了交叉编译。

    但是、我无法在 Ubuntu 22.04上重现此问题。 下面是我的电脑上的日志:

    dev@ula:am62xx-plsdk-10182-rc2$ source ~/sdk/am62xx-plsdk-10182-rc2/linux-devkit/environment-setup
    [linux-devkit]:~/sdk/am62xx-plsdk-10182-rc2> echo $CC
    aarch64-oe-linux-gcc --sysroot=/home/lb/sdk/am62xx-plsdk-10182-rc2/linux-devkit/sysroots/aarch64-oe-linux
    [linux-devkit]:~/sdk/am62xx-plsdk-10182-rc2> $CC hello.c -o hello
    [linux-devkit]:~/sdk/am62xx-plsdk-10182-rc2> file hello
    hello: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=41e582279ad9d0c32da49f1c405bbb988efafb9e, for GNU/Linux 5.15.0, with debug_info, not stripped
    [linux-devkit]:~/sdk/am62xx-plsdk-10182-rc2> cp hello ~/uda/opt/home-root/
    [linux-devkit]:~/sdk/am62xx-plsdk-10182-rc2>

    我使用 NFS rootfs、位置~/uda/opt/home-root 是我的 NFS 上的根目录。

    这是 SK-AM62B-P1 EVM 上的日志:

    root@am62xx-evm:~# file hello
    hello: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch6
    4.so.1, BuildID[sha1]=41e582279ad9d0c32da49f1c405bbb988efafb9e, for GNU/Linux 5.15.0, with debug_info, not stripped
    root@am62xx-evm:~# ./hello
    hello
    root@am62xx-evm:~# ls -l hello
    -rwxrwxr-x 1 weston weston 74344 Jan  9  2025 hello

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

       感谢您的回答。  我使用-static 标志对其进行了交叉编译、它在器件上正常工作 。  我在器件上检查了库、我认为没有缺失的库。 但在动态编译时、仍会出现错误。  

    Ubuntu 22.04.

    okanercan@OkanERCANPHN:~/projects$ source /home/okanercan/ti-processor-sdk-linux-am62xx-evm-10.01.10.04/linux-devkit/environment-setup
    [linux-devkit]:~/projects> ${CC} hello_world.c -o helloWorld
    [linux-devkit]:~/projects> ${CC} hello_world.c -static -o helloWorld_satatic
    [linux-devkit]:~/projects> scp helloWorld root@192.168.1.50:~/
    helloWorld                                                                                                                         100%   73KB   4.1MB/s   00:00    
    [linux-devkit]:~/projects> scp helloWorld_satatic root@192.168.1.50:~/
    helloWorld_satatic                                                                                                                 100% 2756KB   3.2MB/s   00:00    
    [linux-devkit]:~/projects> file helloWorld
    helloWorld: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=3b73c64437e5ec59b4920cf7230e268b81454f86, for GNU/Linux 5.15.0, with debug_info, not stripped
    [linux-devkit]:~/projects> 

    设备上
    root@am62xx-evm:~# ls -lh
    total 2.8M
    -rw-r--r-- 1 root root    0 Dec 17 02:35 candump-2024-12-17_023509.log
    -rwxr-xr-x 1 root root  73K Jan  9 08:38 helloWorld
    -rwxr-xr-x 1 root root 2.7M Jan  9 08:38 helloWorld_satatic
    drwxr-xr-x 3 root root 4.0K Dec 17 05:26 okan
    drwxr-xr-x 2 root root 4.0K Dec 22 07:40 program
    root@am62xx-evm:~# ./helloWorld_satatic
    Hello world from TI Linux!
    root@am62xx-evm:~# ./helloWorld
    -sh: ./helloWorld: cannot execute: required file not found
    root@am62xx-evm:~# file helloWorld_satatic
    helloWorld_satatic: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), statically linked, BuildID[sha1]=ab24dda822ad5861045d2806ad967f75 dfa44f39, for GNU/Linux 5.15.0, with debug_info, not stripped
    root@am62xx-evm:~# file helloWorld
    helloWorld: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=3b73 c64437e5ec59b4920cf7230e268b81454f86, for GNU/Linux 5.15.0, with debug_info, not stripped
    root@am62xx-evm:~# ldd helloWorld
            linux-vdso.so.1 (0x0000ffff944ef000)
            libc.so.6 => /usr/lib/libc.so.6 (0x0000ffff94300000)
            /lib/ld-linux-aarch64.so.1 => /usr/lib/ld-linux-aarch64.so.1 (0x0000ffff944b2000)
    root@am62xx-evm:~#
    

    我用 Yocto 构建文件系统,并添加 Flutter,我不知道,可能是因为有一个问题,我的文件系统.  


    谢谢...
    Okan、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Okan:

    您可以尝试将 hello_world.c 添加到 Yocto 文件系统构建中、以了解其是否仍然存在同样的问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Bin、

         感谢您的支持。 我在 sdcard 上安装了 tisdk-default-image、它可以正常运行。 我将尝试找出 Yocto 构建的问题、更新内核库时文件系统可能已损坏。

        我只使用了 Yocto 添加或删除预发布的项目、如 Flutter。 但我没有准备和构建自己项目的经验。 我认为学习工程并将其集成到 Yocto Build 需要花费大量的时间。 有相关指南吗? 如果有这样一个指南能在这个链接下将 hello_world 项目集成到 Yocto、那将会非常有帮助。
    https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/10_01_10_04/exports/docs/linux/Overview_Building_the_SDK.html
         

    Okan、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Okan:

    很高兴看到进度,你缩小了问题,这与自定义构建的 Yocto 文件系统.

    我将把您的疑问发送给我们的 Yocto 专家、以获取有关如何在 Yocto 编译中添加新工程的评论。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢...