问题标签 [linaro]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
743 浏览

yocto - 无法获取外部 Linaro 工具链版本错误

我正在尝试使用 Yocto-Arago SDK 构建 rootfs 并得到Failed to obtain external Linaro toolchain version错误。

显然应该TARGET_PREFIXINVALID-oe-linux。我已经绑定在 bitbake 运行之前将其导出,但没有成功。如何设置为这个值?

0 投票
1 回答
406 浏览

gcc - %w 操作数上的 ARM GCC 内联汇编错误

我有一个 ARMv8 内联汇编段:

通过 ARM GCC 编译器编译时:

在此处输入图像描述

有趣的是,如果我用 Linaro 编译器进行编译,则没有问题。

在此处输入图像描述

ARM GCC 编译器或我的代码有问题吗?

0 投票
1 回答
538 浏览

eclipse - 如何配置 linaro-gcc

现在我正在使用 gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf 并使用 eclipse 进行交叉编译。但是在构建时,我会收到类似的错误

任何人都可以帮我修复这个错误。/home/osboxes/artik5/opt/toolchains/gcc-linaro-5.5.0-2017.10-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/usr/li我在b中找到 crt1.o、crti.o、libpthread.so.0 和 libpthread_nonshared.a

0 投票
1 回答
2527 浏览

toolchain - 如何在 Windows 中安装 Linaro 工具链?

我在https://www.linaro.org/downloads/找到 Linaro 工具链

但是 tar.xz 格式的文件(例如 gcc-linaro-6.2.1-2016.11-i686-mingw32_arm-linux-gnueabihf.tar.xz )包含符号链接。

如何在 windows 中提取 .tar.xz ?

谢谢,

0 投票
0 回答
411 浏览

cygwin - Linaro gcc 在 Windows 上失败

我正在尝试在 Windows 上启动 gcc-linaro-7.3.1。

我已经从 Linaro 站点下载了 gcc-linaro-7.3.1-2018.05-i686-mingw32_aarch64-linux-gnu.tar,在 Cygwin 上使用 tar 提取,但是当我尝试运行“aarch64-linux-gnu-gcc.exe”时似乎什么也没发生。当我尝试从 Windows cmd 运行时,出现错误“应用程序无法正确启动 (0xc0000022)”。

有任何想法吗?

0 投票
1 回答
1302 浏览

c++ - 针对特定 CXXABI 和 GLIBCXX 版本的交叉编译

我想为在 Linaro 14.04 上运行的 ARM 目标交叉编译软件。

当我使用 arm-linux-gnueabihf-g++ 从我的 Ubuntu 18.04 交叉编译并尝试在目标上运行它时,我收到此错误:

./main: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: 找不到版本‘CXXABI_1.3.9’(./main 需要)

./main: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: 未找到版本“GLIBCXX_3.4.21”(./main 需要)

我的问题是我无法升级目标上的任何库。

所以我的问题是,我可以在编译时指定特定版本的 GLIBC 和 CABI 吗?

非常感谢

0 投票
0 回答
151 浏览

alsa - Alsa Dmix 错误的采样率

我正在尝试在我的 Alsa conf 文件中添加一个 dix,但是当我使用它播放时,采样率是错误的(它太慢了)

我有以下内容:

当我将音频直接播放回硬件时,它播放得很好,但我确实在一开始就错过了一点。aplay -D hw:0,0 /usr/share/sounds/alsa/Front_Center.wav

当我使用我的 dsp0 / dmix 时,速度比它应该慢得多:aplay -D dsp0 /usr/share/sounds/alsa/Front_Center.wav

我究竟做错了什么?

0 投票
2 回答
2065 浏览

c - 如何避免多重定义?链接器忽略了定义的符号,但有一些例外

我正在开发一个嵌入式系统,它有自己的库(例如libc_alt)从标准 libc (fopen、fclose、fread、fseek、ftell)实现一些功能,但不是全部(我需要memset、memcpy、longjmp、setjmp等)标准的libc)。当我尝试将两个库都提供给编译器时

提供libc_alt

提供标准库

在链接器步骤中,编译器 (arm-eabi-gcc) 正确地抱怨 fclose() 的多个定义。我的问题是,是否可以指示编译器排除标准 libc 定义 fclose() 并使用我在 $(COMP_PATH_libc_alt)/stdio.c 中编写的定义?

或者,我如何指示编译器先使用我的stdio.c,然后使用标准 libc 的 stdio.c而忽略重复的函数定义?

例如,在$(COMP_PATH_libc_alt)/stdio.c中找到 fopen() 定义之后;它将忽略标准 libc 中的 fopen()。这样我就可以同时使用 libc_alt fopen()和标准的 libc memcpy(), memset()

更新:谢谢大家的回答。@artless_noise 我之前确实放置了我的 stdio.c -lc。关于使用--wrap symbol,如果我理解正确,引用fclose()将更改为__wrap_fclose(),我需要将我fclose()stdio.c中的名称更改为__wrap__fclose(); 不幸的是,修改“我的” stdio.c是不可能的。实际上,最奇怪的是,由于我将stdio.c 放在-lc 之前,LinaroGCC arm-eabi-gcc能够为fopen(), fseek(), ftell(), fread()(nice) 选择我的定义。但它给出了multiple definition错误fclose()

根据https://gcc.gnu.org/onlinedocs/gcc-4.7.0/gcc/Link-Options.html;上ld -l; 链接器应该忽略-lc在 my 之后出现的重复符号libc_alt.a。它确实做到了,除了一个例外fclose(),我不知道为什么?

在命令中编写此选项的位置有所不同;链接器按照指定的顺序搜索和处理库和目标文件。因此,在文件 foo.o 之后但在 bar.o 之前foo.o -lz bar.o搜索库。如果 bar.o 引用 中的函数,则可能不会加载这些函数。链接器在标准目录列表中搜索该库,该库实际上是一个名为 liblibrary.a 的文件。然后,链接器使用这个文件,就好像它已经按名称精确指定了一样。zz 搜索的目录包括几个标准系统目录以及您使用 -L 指定的任何目录。通常以这种方式找到的文件是库文件——其成员是目标文件的归档文件。链接器通过扫描归档文件来处理归档文件,其中的成员定义了迄今为止已被引用但尚未定义的符号。但是如果找到的文件是一个普通的目标文件,它会以通常的方式链接。使用 -l 选项和指定文件名之间的唯一区别是 -l 用 and 包围库lib.a搜索多个目录。

我如何调用链接器(libc_alt.a包含“我的”stdio.o)

使用nm我的内容libc_alt.a

使用nmLinaro LinaroGCC arm-eabi-gcc 的内容 libc.a

0 投票
0 回答
2099 浏览

c++ - 使用 CMake 和 SYSROOT 路径进行交叉编译的问题

当使用 CMake 交叉编译 ARM 可执行文件并在工具链文件中设置 CMAKE_SYSROOT 变量时,链接器不会自动查找其他库(显式链接到)所依赖的库,例如zglib. 当不使用工具链文件(因此不交叉编译)时,这些不需要在 target_link_libraries() 中明确提及,但是当使用工具链文件时,它们会这样做,否则总是会出现无法找到的链接器错误。我想了解这是为什么。

我的环境的简要说明:

  • 使用 Linux Ubuntu 16 编译运行 Ubuntu 18 的 arm 目标
  • 从目标压缩并在开发系统上解压缩的根文件系统
  • Linaro 交叉构建工具链 (7.4.1)
  • 用于 cmake 的工具链文件,其中定义:CMAKE_SYSROOT、CMAKE_CXX_COMPILER、CMAKE_C_COMPILER 和 CMAKE_AR_COMPILER
  • 编译器路径:/home/brian/workspace/ddpx_xcompile/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu
  • 目标根文件系统的路径:/home/brian/workspace/ddpx_xcompile/ddpx-rootfs-05172019

我尝试了许多组合:设置 CMAKE_LIBRARY_PATH、link_directories 等。但是,唯一成功的选项似乎是在 target_link_libraries() 命令中添加以下内容z dl glib-2.0 pcre:)

以下是错误消息的示例:

接下来是指定库中未定义函数的简短列表。这个错误是针对 的libdl.so.2 not found,还有其他的。

我的错误输出:

我的 Cmake 工具链文件:

0 投票
0 回答
422 浏览

c++ - Rust 可执行文件与 C++ 动态库的 ABI 不兼容

我目前正在尝试将 Rust 可执行文件与用 C++ 和 C 编写的共享库链接。共享库的动态加载在 amd64 架构上完美运行,但是当可执行文件尝试加载共享库时,我遇到了分段错误错误aarch64 linux 机器 [Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-1033-raspi2 aarch64)]。

我正在使用 Linaro aarch64 工具链(http://releases.linaro.org/components/toolchain/binaries/latest-7/aarch64-linux-gnu/gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu。 tar.xz)交叉编译共享库(C++ 和 C 代码的组合)。

在使用 file/readelf 检查时,生成的共享库具有 GNU/Linux ABI,这似乎是因为使用 g++ 在库中构建 C++ 代码,而 Rust 可执行文件的 ABI 是 SYSV(使用交叉编译为 aarch64 https://github.com/rust-embedded/cross项目

我注意到手动编辑共享库的 .so 文件以将 ABI 标志从 GNU/Linux 更改为 SYSV 可以解决问题。

是否可以使可执行文件或库以特定 ABI 为目标?理想情况下,我想以某种方式构建 Rust 可执行文件,以便它可以链接到共享库,而与库的 ABI 无关。

为了提供简要概述,共享库是此头文件的实现: https ://github.com/Azure/iotedge/blob/master/edgelet/hsm-sys/azure-iot-hsm-c/inc/ hsm_client_data.h 我从链接存储库中保留了很多 C 实现代码,但修改了一些头文件的实现以使用 C++。

如果需要任何其他详细信息,请告诉我。

我尝试切换回旧版本的 g++ (4.9) 来构建 C 和 C++ 共享库,但它总是产生一个具有 GNU/Linux ABI 的工件。

这个问题被确定为这个问题的重复我可以从 Rust 代码中调用 C 或 C++ 函数吗?但是这些问题的答案并没有帮助解决我的问题,因为该帖子上的建议/答案表明可以通过传递 C '接口'来调用 C++,这正是我所拥有的。这个问题更多是针对特定目标架构(即 aarch64)的 ABI 不兼容问题。该问题不会在 amd64 目标架构上重现。

预期- Rust 可执行文件和使用 C 和 C++ 构建的动态共享库具有兼容 aarch64 的 ABI。

实际- Rust 可执行文件针对 SYSV ABI,而动态共享库针对 GNU/Linux ABI。