如何为Jetson Nano (ARM64)构建GCC 11交叉编译器

5

我正在遵循这篇指南,但在尝试构建 C++ 库时,我遇到以下致命错误。

../../../../gcc-11.1.0/libsanitizer/asan/asan_linux.cpp: In function ‘void __asan::AsanCheckIncompatibleRT()’:
../../../../gcc-11.1.0/libsanitizer/asan/asan_linux.cpp:199:21: error: ‘PATH_MAX’ was not declared in this scope
  199 |       char filename[PATH_MAX];
      |                     ^~~~~~~~
../../../../gcc-11.1.0/libsanitizer/asan/asan_linux.cpp:200:35: error: ‘filename’ was not declared in this scope; did you mean ‘rename’?
  200 |       MemoryMappedSegment segment(filename, sizeof(filename));
      |                                   ^~~~~~~~
      |             

1
你需要包含linux/limits.h头文件。在Linux中PATH_MAX定义在哪里? - phuclv
1
这个回答解决了你的问题吗?Linux中PATH_MAX定义在哪里? - phuclv
@phuclv,我可以确认头文件已经被包含了,但它并没有包含PATH_MAX。在头文件中定义后,编译成功了。现在我正在测试编译器,以便在撰写答案之前进行。 - Edward
1
我自己也遇到了同样的问题。编辑limits.h来“修复”它似乎有些靠不住,这对你真的有效吗? - c-x-berger
@c-x-berger 我编译的测试程序似乎可以工作。然而,我认为我的测试不够充分。最终我没有在生产环境中使用它。如果您有更好的想法,请告诉我。 - Edward
显示剩余2条评论
1个回答

0

这似乎是 libsanitizer/asan/asan_linux.cpp 中的一个错误。它似乎找到了错误的 limits.h 文件。 我通过修改 asan_linux.cpp 来解决这个问题。

-#include <limits.h>
+#include <linux/limits.h>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接