问题标签 [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.
image - 使用链接描述文件控制 ELF 文件大小
我正在使用 linaro 工具链为 ARM 平台生成 ELF 文件。该文件是应该运行裸机的可执行文件。
我使用链接描述文件来选择内存中各节的位置,因为我想将特定的节放在特定的位置。
问题是当我在内存中向前移动一些部分时,我看到图像大小增加了,尽管没有添加额外的数据。
当我运行时,readelf -a elf_file
我看到虚拟地址(见Address
下面的字段)和图像中的偏移量(见Offset
下面的字段)都增加了。
例子:
链接描述文件中的以下行
. = 0x2000000;
.__translations_block_0 : { TM_TranslationTables.o(__translations_block_0) }
在 elf 文件中产生以下偏移量(从 readelf 输出)
[Nr] Name Type Address Offset Size EntSize Flags Link Info Align
[10] .tdata PROGBITS 0000000000279000 00279080 000000000000000c 0000000000000000 WAT 0 0 16
[11] .tbss NOBITS 0000000000279080 0027908c 0000000000011bcc 0000000000000000 WAT 0 0 16
[12] .__translations_b PROGBITS 0000000002000000 02000080 0000000000000008 0000000000000000 WA 0 0 8
[13] .__translations_b PROGBITS 0000000002001000 02001080 0000000000000008 0000000000000000 WA 0 0 8
我的问题是:
有没有办法在不破坏图像大小的情况下增加某些部分的地址?我只想将该部分加载到内存地址 0x2000000 中,我不希望图像大小为 0x2000000。
任何帮助,将不胜感激。
ubuntu-12.04 - 如何在 Linaro Ubuntu 上禁用启动企鹅和启动文本?
我正在尝试在运行 Linaro Ubuntu 变体的 Chipsee 平板电脑上实现信息亭式引导。
我想关闭出现的四只企鹅,然后是通常的长长的启动消息列表。
Grub 不存在,引导加载程序是 U-Boot。如果不需要,我不想重新编译内核。
我已经尝试在 /boot 中修改 linux.config,将 quiet 和 loglevel=3 添加到内核命令行。行为没有变化。
非常感激任何的帮助。
gcc - Windows 上的 Linaro ARM 裸机交叉编译器和 libwinpthread-1.dll
Linaro gnu AARCH64 ARM 交叉编译器(基于 mingw)的 Windows 二进制分发依赖于库libwinpthread-1.dll。当我运行.\aarch64-elf-gcc.exe --version我得到一个弹出窗口,上面写着
程序无法启动,因为您的计算机缺少 libwinpthread-1.dll。尝试重新安装程序以解决此问题。
在我的一生中,我似乎找不到关于这个库的任何信息,在哪里可以找到它,构建它等等。根据名称,它似乎很明显是一些用于 windows 的 pthread 库,但可能不是。交叉编译器是用于 64 位 ARM 目标的 32 位 Windows 二进制文件。主机是 64 位 Windows 10。
知道在哪里可以找到 32 位版本的 libwinpthread-1.dll 吗?
gcc - Linaro 版本与 GCC 版本
我刚刚注意到 Linaro 版本和 GCC 版本不匹配。
截至今天,GCC 的当前稳定版本是6.2。
当前的 Linaro 稳定版本是6.1-2016.08(链接来自 Linaro 的主页)。
还有可供下载的 Linaro 版本6.2-2016.11 。
Linaro 6.1-2016.08和Linaro 6.2-2016.11的发行说明包含有关 GCC 6 的信息及其发行说明的链接。
基于此,我预计 Linaro 6.1-2016.08 和 Linaro 6.2-2016.11 分别基于 GCC 6.1 和 GCC 6.2。
但事实证明 Linaro 构建中 GCC 的实际版本是 5.3:
Linaro GCC 常见问题页面对此一无所知。
linker - 剥线工具的正确使用
解压后的Linaro GCC 6.2-2016.11工具链占用了将近 3.4 GB 的磁盘空间,我想让它更小。我的目标是armv7-a+vfpv3+hard_float,所以我已经删除了我不需要的东西(例如、、等ld.gold
的库),但它仍然占用将近 1 GB。Thumb
v8-a
v7ve
所以我想使用strip
工具从其二进制文件中删除冗余信息。
我的主要问题是在这种情况下如何正确有效地使用安全带?
一般来说,我们在工具链中有不同的二进制文件,我们可以应用它们strip
:*.exe
, *.a
, *.o
.
我可以判断我只能将strip -s
(删除所有符号)应用于*.exe
文件(ig arm-eabi-gcc.exe)。我对吗?
是否可以应用于strip
图书馆(ig libgcc.a)?
据我了解(见上面的例子)库中的符号可能需要进一步处理。
如果是,我应该--strip-debug
改用(仅删除调试符号)?
下面的示例说明了这些问题并揭示了更多信息。
假设我们有三个文件:
一般来说,我们只是单独编译每个文件以获得可以链接在一起的目标文件:
通过分析目标文件,我们可以看到do_something符号在 libgcc_test.o 中定义,而在main.o中未定义,正如预期的那样:
如果我们同时应用strip -s
这两个文件或只应用到main.o并尝试链接它们,它会起作用:
但是如果我们strip -s
只适用于libgcc_test.o,链接器会产生错误信息:
据我了解,目标文件中存在未解析的符号会强制链接器解析它。如果我在链接之前从目标文件中删除此符号会发生什么?
在将它们链接在一起之前从目标文件中删除符号是否正确且安全?如果是,哪些符号可以删除?
在实际项目中,如果我们应用于strip -s
工具链库(libgcc.a、libc.a、libm.a、librdimon.a"undefined reference to..."
等),它同样会在链接阶段产生大量消息。
但是如果我们使用--strip-debug
选项,链接器会为像skipping incompatible libgcc.a when searching for -lgcc
. 如果我们还原库,则链接成功。
skipping incompatible...
在这种情况下,消息是什么意思?
谢谢你的帮助。
android - Android内核编译错误gcc6 linaro 6
我正在尝试使用 Linaro 6 进行编译,但我收到了这个错误,我认为这与 GCC 6 有关吗?我对编译内核或编码非常业余,但即使搜索类似的术语,我也无法弄清楚:
这是我的 GitHub:
gcc - 奇怪的 Linaro mips 编译器汇编输出
为了创建汇编代码,我使用标志 -S 调用 mipsel-openwrt-linux-uclibc-gcc 编译器(Linaro GCC 4.8-2014.04 r49389)。这会产生如下所示的汇编代码:
在我看来,这不像 AT&T 或英特尔语法。为了产生更熟悉的语法,我尝试了 -masm=intel 标志,但效果相同..
我的第一个想法是生成的 ASM 代码专用于 mips 的固定字宽,但是任何想法如何通过 mipsel-openwrt-linux-uclibc-gcc 生成 AT&T 或 Intel 语法?
感谢您的任何提示!
cmake - CMake 和预构建的 linaro 工具链:crti.o 未找到
我想使用 cmake 和我从这里下载的预编译 linaro 工具链交叉编译 raspberrypi2:git clone https://github.com/raspberrypi/tools
当我尝试对我的项目执行 cmake 时,出现以下错误:
该文件位于以下目录中:
我的 cmake 工具链文件如下所示
sysroot 目录是我安装树莓派映像的位置。我有点困惑这应该是覆盆子图像的根还是 linaro 工具链的路径。
谢谢你的帮助
linux - 是什么导致了 linaro linux 中自动挂载的权限
sdcard 会自动挂载为 root 权限。像这样。
/etc/fstab 是空的,如下所示。
udisks 是否安装了设备?如果是这样,我在哪里可以更改挂载权限选项?
有时,它作为 linaro 用户安装。是什么导致了这种差异?任何想法?