问题标签 [rvds]

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 投票
3 回答
33981 浏览

linux - 如何从共享库中导出符号

我使用 Windows 主机上的 RVDS 编译器使用目标代码文件(C 源代码)创建了一个共享库 ( *.so) 。*.o

我将此共享对象与一个应用程序(gcc用于 Linux 主机上的 ARM 目标)链接并获得一个可执行文件,该可执行文件在运行时会产生分段错误。(我知道我必须调试它!)

如果我创建一个具有相同源文件的静态库,而不是创建共享库,然后与应用程序链接,然后执行应用程序,它可以按预期正常工作。

所以我的问题是:

  1. 我是否需要使用某些结构在我的源文件中显式导出符号(导出到应用程序的函数)或任何其他符号,以便在与应用程序链接时正常工作?需要什么,我该怎么做?

  2. 共享库是如何工作的?即,函数将被加载和运行的地址,将在创建库时在库中给出。应用程序(main())如何解析要执行库函数的地址?

  3. 静态库是如何工作的,即在静态库的情况下,这个地址规范和解析是如何发生的?

0 投票
1 回答
984 浏览

beagleboard - 为 BeagleBoard 创建一个 Hello World 可执行文件

我正在尝试在 BeagleBoard 上运行一个 HelloWorld 项目。为此,我使用 RVDS 创建库,然后使用 CodeSourcery 为 BeagleBoard 创建可执行文件。

要通过 RVDS 创建库,我使用以下命令行:

armcc --cpu cortex-a8 -c hello_world.c --c99 --apcs=/fpic --no_hide_all -O3 -Otime --vectorize --no_unaligned_access -I"D:\RVDS\hello_world" -I"C:\Program Files\ARM\RVCT\Data\4.1\713\include\windows"

但是这个命令行只创建目标文件而不是库。为了创建我使用armar命令的库,但我不确定这是否正确。因此,我的第一个问题是如何使用 RVDS 命令行创建库。

我还尝试通过选择一个新的静态库项目来使用 RVDS eclipse 环境创建库。创建库后,我使用 CodeSourcery 创建可执行文件:

arm-none-linux-gnueabi-gcc -Wall -I. -L. test_hello_world.c -lhello_world -o test_hello_world

但是如果我尝试在 BeagleBoard 上运行这个可执行文件,它就不起作用。因此,我认为我创建库的方式有问题。

如果有人尝试结合使用 RVDS 和 CodeSourcery 来为 BeagleBoard 创建可执行文件,请告诉我。

谢谢你的帮助。

0 投票
2 回答
971 浏览

neon - 在 fpu 设置为 SoftVFP 或 none 的 Cortex A8 上启用 NEON

我正在尝试使用 RVDS 4.0 为 Cortex A8 构建可执行文件。我的代码使用 NEON,但我想将 fpu 选项设置为 none 或 SoftVFP。ARM 网站提到当 fpu 设置为 SoftVFP 时 NEON 被禁用。这是因为 VFP 和 NEON 共享寄存器吗?

有人可以解释为什么当 fpu 设置为 SoftVFP 时我不能使用 NEON,或者即使 fpu 设置为 SOftVFP,我是否可以通过任何选项启用 NEON?

谢谢

0 投票
1 回答
1562 浏览

integer-division - 在 RVDS 下使用 Cortex-M0 进行整数除法

我正在尝试将 64 位整数类型划分为 32 位整数类型,并且我使用 RVDS 4.1 作为工具链。

Cortex-M0没有硬件除数,可以进行下面的操作吗?如果有怎么办?

0 投票
1 回答
1147 浏览

makefile - ELF 符号表中缺少源文件 - 如何包含它们?

我正在处理一个交给我的项目,其中一些构建和链接概念对我来说是新的。我有一个 makefile、几个程序集和 C 源文件、一个 ELF 文件和二进制文件。当我将 ELF 文件加载到我的目标上时,我只能单步执行 C 文件,而不是汇编文件。

当我对 ELF 文件执行 readelf 时,我看到符号表中缺少程序集 (.S) 文件。同样,我的调试器(RealView Debugger 4.1)没有在“图像源”树中列出那些 .S 文件。我可以看到这些文件中的一些符号(即标签名称)包含在我的 readelf 输出中,但不是文件类型符号本身。我一直在检查 makefile 以尝试找出可能无法包含它们的内容,但我不确定我在寻找什么。谁能指出我正确的方向?谢谢!

0 投票
1 回答
309 浏览

arm - 应该使用哪个编译器将 C 代码移植到 ARM?

我是 ARM 的新手。我已经编写了 C 代码,但我希望将代码移植到在所有 ARM 处理器上运行的 ARM。我将开发高端应用程序,例如在智能手机/平板电脑上运行的应用程序。你们能说出哪个是最好的编译器吗?我听说过 RVDS,但这似乎很昂贵。

我的另一个问题是:我可以使用 Microsoft Visual Studio 2008 像 Neon 一样对 ARM Intrinsic 进行编程吗?RVDS 还有其他替代方案吗?

非常感谢您的建议。

0 投票
2 回答
358 浏览

c - 为什么有些编译器会优化 if(a>0) 而不是 if(*(&a)>0)?

假设我在全局范围内声明:

在主要功能中,我有以下条件:

我注意到的一件尴尬的事情是RVDS编译器将删除该if语句并且目标文件中没有分支/jmp。

如果我写:

if ( cmpand branch) 将在编译的目标文件中。


相反,GCC do 使用 ( -O1or-O2-O3) 进行优化:

用-O3编译:

而对于

会给:

GCC 将两者视为相同(应该如此),而 RVDS 则不是?


我试图检查使用的影响,volatile并且在 RVDS 中它确实删除了if(a>333)但 gcc 没有:

我使用的 RVDS 编译器版本中可能存在一些错误。

0 投票
1 回答
494 浏览

c - 在 RVDS 5.01 上隐式声明的函数“typeof”

我正在用 ARM 编译器为安卓手机编译调制解调器代码。
我收到以下错误:

然后我虽然我应该使用__typeof__. 但是我得到了同样的错误:</p>

我什至试过__typeof。但它们都不起作用。

为什么?

编译器是 RVDS 5.01。命令行包含在某些脚本中。

错误信息是:

代码是:

0 投票
1 回答
360 浏览

c - remove debug strings in release build

I use a LOG_DEBUG function to print debug information to the screen. I used a #define _DEBUG to disable LOG_DEBUG function by defining _DEBUG FLAG in compile time (release time). but linux strings commands of release build app still shows debug strings which exists in the compiled app. so what is the alternatives to eliminate arguments of LOG_DEBUG?

the compiler I use: ARM/Thumb C/C++ Compiler, RVCT3.1 [Build 569]

optimization: -O3

0 投票
1 回答
253 浏览

c++ - 在 Makefile 中使用 exit 命令会导致编译错误

我在 Makefile 中使用如下“mycommand”的状态

在编译时使用 Makefile 中的上述用法,我在 Windows 中遇到错误。

我是否需要更新任何环境变量或任何设置。