问题标签 [gnu-toolchain]

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 投票
2 回答
112 浏览

solaris - OracleSolaris 11.2——要使用的工具链

有两个选项 - SunStudio 或 gcc 工具链。开发驱动程序时要遵循的常见做法是什么——确保它使用 32 位和 64 位模式的两种编译器构建,或者选择一个编译器并坚持使用它?

谢谢。

0 投票
1 回答
90 浏览

haskell - 由于路径长度限制,如何解决 Windows 上的 cabal 沙箱构建错误?

有一段时间,我对在我的 Windows 机器上在 cabal 沙箱中进行安装/构建经常失败的事实感到困惑。我最终发现失败是由某些超出MAX_PATH限制的路径引起的(路径实际上限制为 255 个字符)。

作为一个具体的例子,如果我尝试cabal install data-default-instances-old-locale-0.0.1在一个 cabal 沙箱文件夹中,它会失败。在此过程中的某个时刻,Cabalar.exe使用看起来像dist/dist-sandbox-72eb259b\build\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a-45644\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a. 这是相对于 temp 目录下的工作文件夹(我已将其设置为 simple C:\Temp),因此完整路径为C:\Temp\data-default-instances-old-locale-0.0.1-18744\data-default-instances-old-locale-0.0.1\dist\dist-sandbox-72eb259b\build\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a-18744\libHSdata-default-instances-old-locale-0.0.1-6jcjjaR25tK4x3nJhHHjFM.a.

最终路径的长度为 272 个字符,远远超过了 255 个限制。

可以在 Windows 上处理更长的路径,但这并不是一件小事,而且无论如何, ar 似乎没有做任何必要的事情来处理它们(这并不奇怪,因为它只是 GNU 工具链的一个端口)。

我有一种感觉,这是可预见的未来的情况,但也许有人可以想办法解决?

0 投票
3 回答
557 浏览

bash - 寻找大文件的 uniq -c 替代品

我有一个大文件(50 GB),我想计算其中不同行的出现次数。通常我会使用

但是文件足够大,排序需要大量的时间和内存。我可以

对于文件中的每个唯一行,但这意味着 n 为每个可能的行传递文件,这(尽管对内存更友好)比原始行花费的时间更长。

有任何想法吗?


一个相关问题询问了一种在大文件中查找唯一行的方法,但我正在寻找一种方法来计算每个实例的数量——我已经知道可能的行是什么。

0 投票
1 回答
1837 浏览

c++ - 为什么 GNU binutils 和 GDB 合并为一个包?

尤其是标签部分。

这个决定背后的理由是什么?合并是否会影响构建最新 binutils 和 GDB 的建议方式?(事实上​​,当我检查binutils-2_25_1并运行时make all && make install,我也得到了gdb。)

0 投票
1 回答
38 浏览

makefile - 安装后如何获取./configure参数

假设我已经编译并安装了一些软件包:

有什么方法可以获取我传递给的参数./configure吗?

我仍然有原始目录./configuremake发生的位置,但我也对另一种情况感兴趣,即这些文件不再可用的情况。

0 投票
1 回答
157 浏览

gcc - 交叉编译独立应用程序?

我正在尝试为 arm 板交叉编译一个独立的应用程序,最重要的是我想在没有 Android.mk 框架的情况下编译它。

我有以下疑问:-

1- 我应该使用哪个工具(arm-eabi 或 arm-linux-androideabi 等)。

2-我应该从哪里下载库和工具链相关的部分。

3-我应该为独立编译(完全静态)包括哪些编译标志。

如果问题不清楚,请评论也请添加我缺少的相关信息,详细信息将不胜感激。

0 投票
0 回答
549 浏览

c - 无法使用交叉编译器:PXA270 中的 gnu-unknown-linux-gnu-gcc

我有一块 PXA270 板,我正在尝试使用 gnu-unknown-linux-gnu-gcc 编译文件并将其放入我的板中。我已经做了一些步骤如下:

1.解压文件,

2.在我的~/.bashrc中添加一行,

3.重新加载~/.bashrc

完成这些步骤后,我尝试

事实证明

奇怪的是,我转到路径“/opt/microtime/pro/devkit/arm/pxa270/gcc-4.0.2-glibc-2.3.3/arm-unknown-linux-gnu/bin”,我确实看到了arm-unlnown-linux-gnu-gcc 在那里。

所以我的问题是:

1.为什么我的交叉编译器arm-unknown-linux-gnu-gcc在这些设置后不能工作?

2.交叉编译器设置和gcc一样吗?

谢谢你的帮助!

编辑:

我发现交叉编译器文件是 32 位的,而我的 vm 是 64 位的。进行一些修改,它将起作用!

0 投票
0 回答
39 浏览

linux - 将外部库添加到 ARM 的编译器工具链

我已经下载了 ARM Target 的编译器工具链。

我的主机:Linux 目标硬件:ARM7

但我需要使用该工具链添加一些额外的库。

我需要知道如何将新库添加到现有工具链?

谢谢哈里

0 投票
1 回答
1167 浏览

c - arm-elf 和 arm-none-eabi 工具链生成的可执行文件格式有区别吗?

我正在尝试构建一个裸机臂项目。我尝试了 GNU 工具链arm-elfarm-none-eabi. 两个工具链生成的可执行文件在转换为 intel hex 格式时运行良好。

我正在使用 Proteus 软件进行模拟。Proteus 支持调试 elf 和 coff 格式的可执行文件。

在我的情况下,Proteus 接受生成的可执行文件,arm-elf但在加载生成的可执行文件时显示错误arm-none-eabi。Proteus 显示的错误信息是:

在此处输入图像描述

我只是file在 linux 中以两个可执行文件作为参数运行该命令,一个接一个。

结果如下所示。

arm-none-eabi 输出

图片:ELF 32 位 LSB 可执行文件,ARM,EABI5 版本 1 (SYSV),静态链接,未剥离

手臂精灵输出

图片:ELF 32 位 LSB 可执行文件,ARM,版本 1,静态链接,未剥离

是否有任何选项可以使用 arm-none-eabi 工具链生成与 Proteus 兼容的 elf 文件?

编辑:我的收费链版本的详细信息。

提前致谢。

0 投票
0 回答
4272 浏览

arm - IAR 可以生成 GCC 可以链接到的静态库吗?

有一个供应商的软件我想合作。他们有一个代码库,只能使用 IAR Embedded Workbench 编译(据我所知,他们的代码不能使用 GCC 编译)。不幸的是,他们的硬件只适用于他们的软件堆栈,所以我真的无法选择是否要使用它。他们将此代码作为.a为 ARM Cortex-M4 CPU 编译的静态库文件(和随附的头文件)分发。(他们不想分发资源。)为了讨论方便,我们称它为evil_sw_stack.a.

我想使用这段代码,但我没有 IAR 许可证并且对 IAR 的专业知识为零。我想使用 GCC。

有没有办法让 IAR 生成这样一个 GCC 可以链接到的静态库?供应商需要使用什么样的编译器选项来生成这样的二进制文件?
(我猜想生成的二进制文件的 ABI 可以以某种方式指定并设置为符合 GCC 的设置。)

GCC 的示例用法

他们的默认软件堆栈对 GCC 非常友好,这个特定的堆栈是他们产品中唯一不支持的堆栈。一般来说,如果我有以下内容,我可以编译一段简单的示例代码:

  • startup_(devicename).S: GCC 特定的汇编文件
  • system_(devicename).c
  • (devicename).ld: 链接器脚本
  • 特定设备的一些头文件

例如,我可以像这样编译一个简单的示例:

到目前为止,一切都很好。没有警告,没有错误。

我如何尝试使用静态库

为了讨论方便,我们称它为evil_sw_stack.a
这就是我尝试使用它的方式:

不幸的是,这抱怨在system_(devicename).c. 也许他们不小心把它编译到了这个库中?或者也许 IAR 只是这样编译它?现在,如果我尝试system_(devicename).c从 GCC 命令行中删除并简单地链接到该.a文件,我会收到以下错误:

戳文件readelf让我无处可去:

有趣的是,这似乎正在某个地方:

现在我有一堆目标文件,它们确实有根据 的 ELF 头文件,是的readelf,他们确实将启动文件(他们的另一个设备的)编译到库中......我想知道为什么,但我认为这个是一个错误。

这也有效:

所以现在的问题是,尝试使用 GCC 将这些目标文件编译到我自己的应用程序中是否安全?根据this other SO question,目标文件格式不兼容。

我假设启动代码被错误地编译到库中。我可以删除它:

现在我得到了一个evil_sw_stack.a哪个 gcc 可以接受作为输入而不会抱怨。

但是,还有一件事让我仍然担心。当我使用目标文件而不是静态库时,会收到以下警告:

所以它似乎evil_sw_stack.a是用(IAR 等价物)-fno-short-enums-fshort-wchar. 当我在命令行中使用 GCC 时evil_sw_stack.a,它不会抱怨这一点,但当我尝试使用从库中提取的任何目标文件时,它确实会抱怨。我应该担心这个吗?

我不在wchar_t我的代码中使用,所以我相信一个无关紧要,但我想在我的代码和库之间传递枚举。

更新

即使链接器没有抱怨,当我实际从静态库中调用一些函数时它也不起作用。在这种情况下,请确保在调用链接器时以正确的顺序放置库。根据这个问题的公认答案,它们需要以相反的依赖顺序排列。这样做之后,它仍然遗漏了一些 IAR 废话:

我发现这些__aeabi函数是在中定义的,libgcc但即使我也链接到 libgcc,中的定义libgcc对于里面的函数似乎还不够好evil_sw_stack.a

编辑:经过一番谷歌搜索,似乎arm-none-eabi-gcc不支持这些特定__aeabi功能。看看这个问题

无论如何,在查看ARM 的运行时 ABI 文档__aeabi之后,可以使用它们的标准 C 库等效项轻松实现缺少的函数。但我不太确定如何__iar_vla_alloc2以及__iar_vla_dealloc2应该如何工作,并且在网上找不到任何关于它们的文档。我发现的唯一一件事是 VLA 的意思是“可变长度数组”。

因此,除非芯片供应商能够以不使用这些符号的方式编译他们的静态库,否则这似乎永远不会奏效。那正确吗?

免责声明

我不想透露供应商是谁,也不愿透露我使用的产品。他们对这件事不能正常工作并不感到自豪,并要求我不要这样做。我问这个问题是为了帮助而不是诋毁他们。