问题标签 [codesourcery]

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 投票
1 回答
987 浏览

embedded - 用于 ColdFire 开发的 CodeWarrior 与 CodeSourcery G++

我对飞思卡尔的CodeWarrior工具链和CodeSourcery G++之间的任何比较分析感兴趣,以便为 ColdFire 系列处理器开发嵌入式应用程序。

0 投票
7 回答
5656 浏览

c++ - GCC C++(ARM)和指向结构字段的常量指针

假设有一个简单的测试代码

它是在 CodeSourcery G++ (gcc 4.3.2) 中为裸机 ARM 编译的。它还有一个非常标准的链接器脚本。

当在 C 中编译(作为 main.c)时,对象“数据”按预期进入 Flash。当用 C++ 编译时(作为 main.cpp),这个对象进入 RAM,并且添加了额外的代码,这些代码只是将值从 Flash 复制到 RAM(值已经计算,只需复制!)。所以编译器可以计算地址,但不知何故不想“只使用它”。问题的根源在于地址的乘法——没有“*2”乘法,两个版本都按预期工作——“数据”被放置在闪存中。另外 - 当“数据”被声明为:

也一切都很好。

C 和 C++ 编译的所有文件都是相同的,唯一的区别是对编译器的调用 - g++ 用于 main.cpp,gcc 用于 main.c(警告级别不同,c++ 禁用了 RTTI 和异常)。

是否有任何简单而优雅的方法来克服这个“C++ 问题”?我确实需要这样的操作来在 Cortex-M3 的位带区域中创建位地址的 const 数组。这是一个错误,还是 C++ 编译器的一些奇怪限制?

我知道我可以在“C”文件中创建数据对象,而只是“extern”——将它们包含在 C++ 中,但这不是很优雅 [;

谢谢大家的帮助!

0 投票
1 回答
911 浏览

linux - Linux USB 调试连接到 LuminaryMicro 评估板

我正在尝试将 Stellaris LM3S8962 评估套件连接到 linux 主机。我正在使用 CodeSourcery G++ 作为开发工具链。当我尝试运行 helloworld 示例时,连接失败并显示以下消息:

arm-stellaris-eabi-sprite:错误:E104。与 USB 设备通信的 I/O 错误。arm-stellaris-eabi-sprite:等待 GDB 连接,传递错误警告:远程故障回复:E.fatal.E104。与 USB 设备通信的 I/O 错误。arm-stellaris-eabi-sprite:错误:E002。未初始化

当我用 USB 电缆连接评估板时,系统似乎可以使用该设备:

3 月 24 日 14:37:16 n6-ws2 内核:usb 5-2:USB 断开连接,地址 5 Mar 24 14:37:18 n6-ws2 内核:usb 5-2:使用 uhci_hcd 和地址 6 Mar 的新全速 USB 设备24 14:37:19 n6-ws2 内核:usb 5-2:配置 #1 从 1 个选项中选择

此外,我似乎可以通过命令行工具以某种方式连接(但我确实得到了一些奇怪的字符):

[mlong@n6-ws2 bin]$ ./arm-stellaris-eabi-sprite -i CodeSourcery ARM Debug Sprite (Sourcery G++ 4.4-104) armusb: [speed=] ARMUSB 设备
armusb:///�̙ - ؎� ( ̙)

有人有什么建议我可以试试吗?

非常感谢,

麦克风

0 投票
2 回答
2502 浏览

c++ - CodeSourcery 给出编译错误:缺少位/c++config.h

在我的项目中,我将 Eigen C++ 库用于线性代数。当我为 ARM NEON 打开矢量化标志 (-mfpu=neon -mfloat-abi=softfp) 时,我收到编译器错误 - c++config.h 没有这样的文件或目录。

我不明白出了什么问题,这个 bits/c++config.h 是什么?我应该怎么做才能解决这个问题?

维克拉姆


主程序


生成文件


错误

0 投票
4 回答
2976 浏览

c - 为 ARM NEON 编译时出现未知的 GCC 错误(严重)

我有一个基于 ARM NEON Cortex-A8 的处理器目标。我正在通过使用 NEON 来优化我的代码。但是当我编译我的代码时,我得到了这个奇怪的错误。不知道如何解决这个问题。

我正在尝试在我的主机上使用 Code Sourcery (PART2) 编译以下代码 (PART 1)。我得到了这个奇怪的错误(第 3 部分)。我在这里做错了吗?其他人可以编译这个,看看他们是否也得到相同的编译错误?

奇怪的是,在代码中,如果我注释掉代码的else if(step_size == 4)一部分,那么错误就会消失。但是,遗憾的是,没有它我的优化是不完整的,所以我必须拥有它。

起初我认为这是 CodeSourcey 编译器(在我的主机上)的问题,所以我直接在我的目标上编译了程序(我的目标在 Ubuntu 上运行)。我在那里再次使用 gcc,我得到了同样的错误,当我注释掉该else if(step_size == 4)部分时,错误消失了。

帮助!


第1部分


第2部分


第三部分

0 投票
1 回答
15104 浏览

android - 是否可以在非 root 的 android 手机上运行本机 arm 二进制文件?

好吧,我一直在低级 Android 编程(使用 CodeSourcery 工具链的原生 C/C++)的浑水中潜水。我在模拟器上试用了可执行文件,它工作正常。我想在真实设备上试用一下。所以我插入了我的关系并将文件推送到文件系统。然后我尝试执行二进制文件,但出现权限错误。我如何安装它或将它发送到哪里真的无关紧要,我不是 root 并且它不允许我执行它。有没有办法在非root手机上运行这样的程序?

0 投票
5 回答
32458 浏览

gcc - 如何阻止 MinGW 和 MSYS 修改命令行中给出的路径名

在 Windows 上,我正在使用 CodeSourcery 的交叉编译器套件为 ARM/Linux 交叉编译一个程序。我使用 MinGW MSYS 作为我的命令解释器,它经常会破坏我的路径和路径名。例如,为了构建我的程序,我调用

当然,我想/usr/lib/myrpath将逐字插入myprogram可执行文件中——我正在编译的 ARM Linux 目标不使用 MinGW 或 MSYS。但这就是最终的结果:

不完全是我想要的。如果我直接在 cmd.exe 命令行上调用 GCC,我会在可执行文件中获得正确的 rpath。如果我在 MSYS 命令行上调用 GCC,我会得到损坏的 rpath。如果我使用从 cmd.exe 命令行使用 make 运行的 Makefile 调用 GCC,我仍然会得到一个损坏的 rpath (!)

有什么想法可以关闭这种烦人的行为吗?

0 投票
2 回答
41710 浏览

gcc - 设置全局 gcc 默认搜索路径

跑步时

我得到以下输出:

并且当交叉编译一些包时,能够附加到这些路径将使我的生活更容易。我知道 -L 选项,我想使用它,但是许多包在交叉编译时不尊重它,而且将它与 codesourcery 一起使用会导致问题。(有关详细信息,请参阅本文末尾)。基本上我有一个完整的目录树,其中包含编译包所需的所有文件,我想将该目录树添加到默认搜索路径中。例如,这样 -print-search-dirs 也会输出类似于以下内容的路径:

除了已经列出的路径。我不是在寻找特定于代码源的答案,因为我有几个可以使用的工具链。

对于那些好奇的人,这里是 codesourcery 安装的错误:

作品

失败:

所以很明显它是从主机中获取 libc 的。我已经看到这种情况发生在不止一个工具链上,但不是全部。

回应评论: 这是输出

0 投票
4 回答
5723 浏览

c - GCC 别名在翻译单元之外起作用 -AKA- 这甚至是适合这项工作的工具吗?

我在 STM32 (Cortex-M3) 上使用 FreeRTOS,并使用 ST 的 CMSIS 库来引导所有内容。

CMSIS 库SVC_Handler在启动“.s”文件中定义了弱符号。必须在某处覆盖它才能在中断向量表中获取您的 ISR。FreeRTOS 定义了vPortSVCHandler,这是我想要处理 SVC 中断的 ISR。

我想使用我的应用程序代码(即不修改 FreeRTOS 或 CMSIS 源代码)将两者“粘合”在一起。我认为别名是完成这项工作的正确工具,所以我尝试了这个(在单独的源文件 main.c 中):

这导致:error: 'SVC_Handler' aliased to undefined symbol 'vPortSVCHandler'

事实证明,根据此处的 GCC 文档http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html,为了使用该alias属性,您不能在翻译单元之外对符号进行别名。所以我想我会尝试extern将符号放入 main.c 中,如下所示:

这会产生相同的错误。有什么建议么???

我真的很想避免修改任何一个库。我知道我可以编写一个SVC_Handler简单地调用的函数vPortSVCHandler,但这可能会给 ISR 增加不必要的开销(可能取决于优化设置)。注意:FreeRTOS 示例通过自定义启动文件完成此操作。我正在寻找一种从 C我的链接器脚本中执行此操作的方法。

  • 编译器版本:gcc 版本 4.5.2(Sourcery G++ Lite 2011.03-42)
  • 目标:arm-none-eabi
0 投票
1 回答
1318 浏览

perl - 为 MIPS 处理器交叉编译 Perl 或 Expect

我正在使用具有 MIPS 处理器的嵌入式板。我应该为具有不同应用程序的系统开发测试。我的问题是:有没有办法为目标板交叉编译 Perl 或 Expect。我的理解是我们使用的主板是带有 800 MHz 处理器的 MIPS。不确定型号。我知道我们使用 CodeSourcery 来编译所有应用程序。

有没有办法使用 CodeSourcery 或其他工具为目标板编译 Perl 或 Expect?