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.

[参考译文] PROCESSOR-SDK-AM62X:wordsize.h -何时使用

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1363464/processor-sdk-am62x-wordsize-h---when-using

器件型号:PROCESSOR-SDK-AM62X

您好 Andres (mostpulous)在使用 protobufs 并尝试配置构建空间时,我很难让[configure]脚本正确执行。

我在下面有一个黑客攻击来修复它、但我不确定__ Aarch64_为什么不会正确配置。 可能是 protobufs 3.20.x 配置工具是失败的原因。

请参阅:

#define __Aarch64__                                            ------------------------------------------------------- 添加了。

位于以下 wordsize.h 文件中。

但在相关链接中、我查看了位于 Aarch64-OE-Linux 编译器 Aarch64-OE-linux-gcc 的$CC 编译器环境点   

默认情况下、它是否应定义__Aarch64__。 protobufs 的问题是否与 autogen.sh 有关 ?(请注意,它是在 linux-dev/environ-setup 脚本之后运行的)。

$ echo $CC
aarch64-oE-linux-gcc --sysroot=/home/mnidev/ti-processor-sdk-linux-rt-am62xx-evm-09.02.01.09/linux-devkit/sysroots/aarch64-oe-linux

github.com/.../protobuf.git

提交 c18477fab24fee9a667965d9ea537e80f1648698 (head -> 3.20.x、origin/3.10)

但进行此更新我纠正了32位使用错误。

TI-PROCESSOR-SDK-LINUX-RT-am62xx-EVM-09.02.01.09/Linux-Devkit/sysroots/aarch64-OE-linux/usr/include/bits

$ cat wordsize.h
/*根据预处理器定义确定单词大小。

版权所有(C) 2016-2022自由软件基金会、Inc.
这个文件是 GNU C 库的一部分。

GNU C 库是自由软件;您可以重新发布它和/或
根据 GNU 较宽松公众公告的条款对其进行修改
由自由软件基金会发布的许可;或者
许可证的版本2.1或(可选)任何后续版本。

GNU C Library 的发布是为了希望它能发挥作用、
但无任何担保;无任何暗示担保
适用于特定用途的适销性或适用性。 参阅 GNU
宽通用公共许可证、了解更多详细信息。

您应该已经收到了 GNU 较宽松的公众声明的副本。
GNU C 库许可;如果没有许可、请参阅
。 */

#define __Aarch64__                                            ------------------------------------------------------- 添加了。
#if defined (__ Aarch64_)&& defined (__ LP64_)
# define __WORDSIZE 64

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

    高 RG、

    您能查看此帖子吗: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1344666/am4378-linux-devkit-compile-code-failed-for-ti-processor-sdk-documents-need-to-be-updated/5128591#5128591

    您可能错过了  CFLAGS 美元 变量、除了使用 CC 美元 对象和对象。

    此致、Andreas

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

    谢谢、我看到 AM335中提到的一些其他标志。

    但在使用 AM62x 时:我没有看到添加了大小变量。  

    ~/work/latest/protobuf (3.20.x)
    $ECHO $CFLAGS

    ~/work/latest/protobuf (3.20.x)
    美元 源~/ti-processor-sdk-linux-rt-am62xx-evm-09.02.01.09/linux-devkit/environment-setup
    ~/work/latest/protobuf (3.20.x)
    $ECHO $CFLAGS
    -mbranch-protection=standard --sysroot=/home/mnidev/ti-processor-sdk-linux-rt-am62xx-evm-09.02.01.09/linux-devkit/sysroots/aarch64-oe-linux

    因此、我应该添加标志:export CFLAGS="$CFAGS  -D _Aarch64__ "?   或者我应该修改环境设置以添加此标志吗?

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

    好的、添加额外的-D__Aarch64__标志纠正了这个问题-我认为我将更新环境设置以自动添加它、从而防止此手动步骤。 TI 是否也会进行此更改(假设这是正确的路径)?

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

    RG、

    让我更深入地研究一下、以确保我们以适当的方式解决此问题、但需要一整天左右的时间、我才能有时间解决此问题并进行设置。 无论哪种方式、您都可以立即使用它来构建。

    此致、Andreas

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

    安德烈亚斯,我回去重现,并发现,甚至在添加-D__Aarch64__的 CXXFLAGS 和 CFLAGS 后,  

    在以下位置配置脚本:

    ~/work/latest/protobuf (3.20.x)
    $ git 远程-v
    源站 github.com/.../protobuf.git (获取)
    origin github.com/.../protobuf.git (推送)

    仍然失败。 我看到了一些与 ac_nonexistent.h 的测试代码相关的错误(这个文件应该是由配置脚本生成的、所以认为还有其他一些与 protobufs 或与环境设置脚本生成的环境的兼容性相关的错误。

    1636 conftest.cpp:40:10:致命错误: ac_nonexistent.h:没有这样的文件或目录1637 40 |#include
    1638 |^~~~~~~~~~~~~~~~~~

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

    高 RG、

    感谢您的额外备注。 我今天没能回答这个问题、但明天应该能够回答这个问题、我将在这里再次报告。

    此致、Andreas

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

    谢谢、我已在目标头文件中将__ Aarch64__定义重新添加到 wordsize.h、作为一种解决方法、因为 export CFLAGS="$CFLAGS -D__WORDSIZE=64 -D__AArch64_"标志应该可以与 protobufs 一起使用、但不能。

    目前,我正在研究 gRPC 交叉编译- Bazel 是新的,用于交叉编译 gRPC 的 CMakeFiles 也是一个挑战。 Bazel 让它听起来就像你可以访问一些 repo 并下拉交叉编译工具-但其他人表示这是一个微不足道的努力。 我想知道 Yocto Arago TI 是否具有  

    参考:此处是一个与链接 PI 相关的链接、其中讨论了交叉编译的插件: https://forums.raspberrypi.com/viewtopic.php?t=221482

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

    高 RG、

    我有机会更深入地了解这一点、下面有几条快速评论:

    1. 原型 是 Yocto (meta-oE/recipes-devtools/protobuf)的一部分、实际上、它也是我们 SDK 版本的一部分、就像它一样。 为什么您不仅要使用它、而是尝试在 Yocto "艰难的道路"外部交叉编译这个代码? 如果您这样做是为了获取此工具的较新版本、我首先要做的是检查 Yocto 上游分支是否有较新的相关配方变体、并采用该配置、或从其"借位"、以使其在当前 AM62x SDK v9.2的上下文中有效。

    2. Yocto 中提供的这种方法带来了下一个很自然的步骤:查看配方以了解它是如何构建的、并了解我们是否可以从中学习到任何东西: https://github.com/openembedded/meta-openembedded/tree/kirkstone/meta-oe/recipes-devtools/protobuf

      作为其中的一部分、您可以了解构建方法 https://github.com/openembedded/meta-openembedded/blob/kirkstone/meta-oe/recipes-devtools/protobuf/protobuf_3.19.6.bb 如何 应用位于此处的一组补丁 https://github.com/openembedded/meta-openembedded/tree/kirkstone/meta-oe/recipes-devtools/protobuf/protobuf、 这是通常为了使交叉编译正常工作而做的一件很常见的事情。

      进一步检查后、此处的补丁会激增:

      [补丁]示例/Makefile:尊重 CXX、LDFLAGS 变量、修复编译
      https://github.com/openembedded/meta-openembedded/blob/kirkstone/meta-oe/recipes-devtools/protobuf/protobuf/0001-examples-Makefile-respect-CXX-LDFLAGS-variables-fix-.patch

      请记住我们之前讨论过编译器标志的方式、所以这个问题看起来非常相关、因为补丁程序修复了这方面的问题。 请仔细研究一下这个问题(还包括其他补丁和构建方法、因为所有这些都是出于某种原因而完成的、可能也适用于您的情形。

    此致、Andreas

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

    尊敬的 Andreas:

    ANS1)出于标称原因、为了与现有的现场软件兼容、我需要检查该层是否可以返回到以前版本的原型和 gRPC、从而尽可能使现有的应用在两个芯片之间保持一致、并适应新的构建环境(从 STM 转向 TI)。

    ANS2)是的、这似乎是一种很好的方法(需要考虑到之前的代码库/硬件)。 让我的工作中断下来、谢谢这些要点。 当两个平台以兼容的方式工作时、我绕圈并标记此问题已修复。

    我希望我在邓宁克鲁格线的低点!

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

    尊敬的 Andreas:

    除了 eSDK 系统构建存在以下问题:

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1371283/processor-sdk-am57x-am623x-bitbake-tisdk-base-image--c-populate_sdk-completes-fine-but-bitbake-tisdk-base-image--c-populate_sdk_ext-fails/5239255?tisearch=e2e-sitesearch&keymatch=%20user%3A594119#5239255 

    我现在确实看到了 gRPC 库、但我想如果 Yocto 应该构建 x86风格的工具、我也会从这个库中获取 protoc 编译器。 有一段时间了、在道路和桥梁上工作...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    除了 eSDK 系统版本存在此问题之外:

    好的、谢谢链接;我刚拿起它(无论如何都会分配给我、但该过程需要一天的时间才能正常进行)。 让我们围绕某个特定问题保持不同线程的主题。

    此致、Andreas