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.

[参考译文] CCS/TM4C123AE6PM:在 CCS 6.1中链接标准库时出现问题

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/961970/ccs-tm4c123ae6pm-problem-linking-standard-library-in-ccs-6-1

器件型号:TM4C123AE6PM
主题中讨论的其他器件:TM4C123GH6PMTM4C123

工具/软件:Code Composer Studio

我编写了一个程序、该程序使用"stdlib.h"中的系统调用、我收到一条链接器错误消息、说它找不到符号"system"。 我查看了"software-dl.ti.com/.../sdto_cgt_tips_for_using_printf.html" 并相应地增加了堆大小、但这不起作用。 我还尝试寻找"stdlib.lib"、它可能是"stdlib.h"的静态链接库、但在我的文件系统上找不到任何库。 到目前为止、我已经包含和链接的所有库都包含在下面的编译调试输出中、以及我使用的最大堆和堆栈大小。 我不确定我在这里缺少什么-我认为我需要链接一个文件、但我不知道哪个文件。 我认为"stdlib.h"是一个相当标准的库、因此 CCS 可能已经完成了链接本身、或者链接过程将是显而易见且容易的、但到目前为止我已经被证明是错误的。 如何定义符号"系统"?

相关代码:

#include

系统("...)

编译配置工程调试

"C:\\ti\\ccs1010\\ccs\\utils\\bin\\gmake"-k -j 4 all -O

构建目标:"interrupt.out"
调用:ARM 链接器
"c:/ti/ccs1010/ccs/tools/compiler/ti-cgt-arm_20.2.1.LTS/bin/armcl /ti/ccs1010/ccs/tools/compiler/ti-cgt-arm_20.2.1.LTS/lib /ti/ccs1010/ccs/tools/compiler/ti-cgt-arm_20.2.1.LTS/include /ti/ccs1010/ccs/tools/compiler/ti-cgt-arm_20.2.1.LTS/include /ti/TivaWare_C_Series-2.2.0.295/driverlib/ccs/Debug/driverlib.lib -mv7M4 --code_state=16 --float_support=FPv4SPD16 -me --preinclude="C:/ti/ccs1010/ccs/tools/compiler/ti-cgt-arm_20.2.1.LTS/include/stdlib.h /ti/TivaWare_C_Series-2.2.0.295 --define=CCS"--define=TM4C123GH6PM --g --gcc --diag_warning=225 ---cmp_ip_intrack-"--ategat_ines="-link_intrack_ines="-link_inat_ines="-ature-ines="-ategot_ina.htm"--aturb.htm"-link_inat_inaturb.htm"---link_intrack_ines="-at_at_at_ine-link_ategot_ature-ines="-at_ategot_aturb.htm"-at_at_ine-link_ine-link_ategot.htm#-aturb.htm#-at_at_at_ine-link_ines="-ate-link_ine-time-ine-link_ategot.htm#-aturb.htm /ti/TivaWare_C_Series-2.2.0.295/driverlib/rvmdk/driverlib.lib


未定义  的首次引用
符号      文件中
------      --------
系统      /main.obj

错误#10234-D:未解析的符号仍然存在
错误#10010:链接期间遇到错误;未构建"Interrupt.out"

>>编译失败
Makefile:144:目标'Interrupt.out'的配方失败
Makefile:140:目标'all'的配方失败
gmake.1]:*[Interrupt.out]错误1
Gmake:*[All]错误2.

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

    [引用 user="K Saurav"]我认为"stdlib.h"是一个相当标准的库、因此 CCS 可能已经完成了链接本身、或者链接过程将是显而易见且简单的、 但到目前为止、我已经证明是错误的。根据 http://www.iso-9899.info/n1570.html#4.p6 stdlib.h、仅托管 环境的 C99编译器需要支持。

       ARM 优化 C/C++编译器 v20.2.0.LTS 用户指南(修订版 V)的第5.1.1节实现定义行为 包含:

    [引用] TI 编译器正式支持独立环境。 C 标准不需要一个独立环境来提供每个 C 功能;特别是库不需要是完整的。 但是、TI 编译器致力于提供托管环境的大多数功能。[/quot]和  J.3.2环境部分包含:

    [报价]不支持系统功能。 (7.20.4.6).系统功能旨在创建子进程、因此仅在 Windows 或 Linux 等托管环境中才有意义、因为该环境具有可创建子进程的操作系统。

    在 TM4C123AE6PM 微控制器上、您希望系统调用执行什么操作?

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

    遗憾的是、我可以确认 TI ARM 编译器不支持系统 RTS 函数。

    谢谢、此致、

    乔治

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

    就像正常 C 函数中的系统调用一样。 我基本上尝试从微控制器获取数据、该微控制器通过 REST API 提供服务。 我尝试导入外部库以使其余客户端呼叫更容易、但导入这些库时遇到问题。 就像我尝试导入的一个库一样是[https://github.com/whoshuu/cpr]、但它开始在"iostree"和"string"上抛出错误、即使主文件具有 CPP 扩展名。 因此、我不是编写一个批处理脚本、它可以执行该操作、而是尝试通过系统调用执行该批处理脚本。 `s我知道 μ`系统 μ 不受支持、我将尝试保持批处理文件运行、将筛选出的 REST 调用转储到文件中、然后只需从代码中读取文件即可。 我假设将支持文件操作(fopen、fscanf、fprintf)?

    如果有问题、微控制器就是 Phyphox。

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

    [引用用户="K Saurav"]如果有问题,则微控制器是 Phyphox。

    我不清楚您使用的是什么微控制器。 什么是 Phyphox? 您是否使用 TM4C123 MCU? 您能否构建 TivaWare 库随附的简单 CCS 工程? TivaWare 库可从 https://www.ti.com/tool/SW-TM4C 下载。