This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] RM57L843:RM57L843和 MPIR 库

Guru**** 2331900 points
Other Parts Discussed in Thread: RM57L843
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/598721/rm57l843-rm57l843-and-mpir-library

器件型号:RM57L843

大家好


我有以下问题、但到目前为止我无法解决:

对于 UNI 中的项目、我需要编写一个程序、在本例中使用外部库 MPIR (多个精确整数和合理化)、按照库的说明进行操作;我使用 Microsoft Visual Studio for generic c 构建该程序、并获取文件
标题:mpir.h  

库: mpir.lib

第二步、我需要在电路板 Hercules RM57L843上运行代码

我使用了 HalCodGen 生成所需的文件
2.从 ARM 编译器-->包含选项--我添加了库的位置


3.从

3-1 ARM Linker-->文件搜索路径->在顶部、我添加了文件 mpir.lib 的位置
3-2 在底部我再次添加了库文件夹的位置。



4.当我构建项目时、我得到错误:


错误#10234-D:未解析的符号仍然存在
错误#99923:损坏的成员标头:'c:/Users/masj/Documents/Code Composer/mpir-3.0.0/lib/Win32/Debug/mpir.lib'

如果我删除3-1,则先前的错误(错误#99923:)消失。

我的问题是:

如何解决这些误差。
2.该库是使用 Visual Studio 构建的吗?


谢谢你

此致
Moud

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Moud Jadaan"]2. 该库是使用 Visual Studio 构建的吗?[/quot]这是问题的原因。 Visual Studio 编译器将编译该库、以便在 Windows 下运行的 x86 CPU 上使用、而在 RM57L843上使用时、需要为 ARM Cortex-R CPU 编译该库。

    您需要 在使用 ARM 编译器构建的 CCS 中创建 MPIR 库、而不是尝试链接使用 Visual Studio 编译的库。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的切斯特

    感谢您的回答。

    当我检查 MPIR 文档时、可以为不同的 CPU 构建、如下所示;例如、对于 ARM、我需要将其构建为通用 C 语言、而这正是我所做的。

    但是、这就引出了一个问题:如何使用 CCS 构建 MPIR? 因为在文档中,对于类似 Unix 的系统或 Visual Studio 有两种方法
    再次感谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Moud Jadaan">当我查看 MPIR 文档时,可以为不同的 CPU 构建该文档,如下所示; 例如、对于 ARM、我需要将其编译为通用 C、我所做的就是这样。我下载了 mpir-3.0.0、并在 MPN/ARM 子目录中看到 ARM CPU 的汇编器源文件(尚未检查汇编器所针对的 ARM 架构)。

    mpir-3.0.0文档指出它支持交叉编译。 在运行 Ubuntu 16.04 LTS 的 PC 上、我能够配置 mpir-3.0.0、以便使用 面向运行 Linux 的 ARM 处理器的 ARM-Linux-gnueabi 工具链进行交叉编译:

    ./configure --host=arm-linux-gnueabi
    make 

    但是、要在 RM57L843上使用 mpir、需要使用"裸机" ARM 交叉编译器。 当我尝试将 mpir 配置为使用 CCS 7.1安装的 gcc-arm-none-eabi-4_9-2015q3裸机 GCC 交叉编译器时、配置失败、原因如下:

    $./configure --host=arm-none-eabi
    
    正在检查如何切换到文本部分... .text
    检查如何切换到数据段... .data
    正在检查汇编器标签后缀... :
    正在检查汇编器全局指令... 全局
    检查汇编器全局指令属性...
    正在检查全局变量是否以下划线作为前缀... /home/mr_halfword/ti/ccs710/ccsv7/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin /arm-none-eabi-nm:conftest.o:文件格式未识别
    未知
    配置:警告:+------
    配置:警告:|无法确定全局符号前缀。
    配置:警告:|/home/mr_halfword/ti/ccs710/ccsv7/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin /ARM-none-eabi-nm -B 输出不包含全局数据符号。
    配置:警告:|将不使用下划线继续。
    配置:警告:|如果这是错误的、则您将收到参考
    CONFIG: WARNING:|至__gmpn_add_n 的链接错误(注释3下划线)。
    配置:警告:|在这种情况下、使用覆盖执行全新构建、
    配置:警告:| ./configure GMP_CV_ASM_underscore =是
    配置:警告:---------------
    正在检查如何切换到只读数据部分....SECTION.rodata
    正在检查汇编器.type 指令... .type$1、@ 2
    正在检查汇编器.size 指令... .size$1、$2
    正在检查汇编器本地标签前缀... 配置:警告:"/home/mr_halfword/ti/ccs710/ccsv7/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin /ARM-none-eabi-nm -B"故障
    配置:警告:无法确定本地标签、使用默认 L
    
    检查汇编器字节指令... .byte
    正在检查如何定义32位字... /home/mr_halfword/ti/ccs710/ccsv7/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin /arm-no-eabi-nm:conftest.o:无法识别文件格式
    /home/mr_halfword/ti/ccs710/ccsv7/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin /arm-no-eabi-nm:conftest.o:无法识别文件格式
    配置:错误:无法确定如何定义32位字 

    结论是、提供的 mpir-3.0.0编译系统不支持裸机 ARM 环境的交叉编译、因此您需要修复编译系统或创建 CCS 工程来编译 mpir 源代码。

    此外、mpir 看起来像一个大型库、该库在内部执行动态内存分配、因此您是否检查 了 RM57L843微控制器是否有足够的内存来满足您的应用需求?

    检查所需内存使用情况的一种方法是获得一个能够运行 Linux 的廉价 ARM 板、例如 BeagleBone Black 编译您的应用程序以在 ARM Linux 下运行并检查所用的内存量。