器件型号: TMDS64EVM
在为 PRU 编译和链接 C 代码时、我遇到了一个未定义的符号链接器错误、缺少符号“__pruabi_remu“的定义、这是由代码块中的条件语句引起的:
if (framecount % 1000 == 0)
{
*PRU1_MINOR_FRAME_CNT =帧计数;
}
从我看到的,我缺少一些必需的库文件,“pruaib“或类似的东西,但在我的安装或在线找不到任何类似的文件。 对在哪里找到它有什么建议吗?
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.
器件型号: TMDS64EVM
在为 PRU 编译和链接 C 代码时、我遇到了一个未定义的符号链接器错误、缺少符号“__pruabi_remu“的定义、这是由代码块中的条件语句引起的:
if (framecount % 1000 == 0)
{
*PRU1_MINOR_FRAME_CNT =帧计数;
}
从我看到的,我缺少一些必需的库文件,“pruaib“或类似的东西,但在我的安装或在线找不到任何类似的文件。 对在哪里找到它有什么建议吗?
我正在使用 SDK 示例中的链接器文件、并且 makefile 是在我编译时由 CCS 自动生成的、但在这里它们已附加。 (我更改了文件扩展名,因此 E2E 论坛允许我上传文件)
你(们)好
很抱歉这里延迟了回复。
“--disable_auto_rts“标志阻止链接器自动拉入 PRU 运行时支持库libc.a()、该库包含 __pruabi_remu 和其它算术辅助函数。 如果没有此库、任何需要运行时支持的 C 操作都将产生未定义的符号错误。
选项 A—删除 --disable_auto_rts (最简单)
在 CCS 工程的链接器设置中、删除 --disable_auto_rts 标志、除非出于任何特定原因添加了该标志。 这使链接器能够在 PRU 编译器安装中自动找到并链接正确的运行时库。
选项 B—手动链接 libc.a
如果 --disable_auto_rts 出于其他原因需要、请通过添加 -llibc.a 链接器标志来将运行时库显式添加到链接器命令中。 使用通用名称 libc.a 允许链接器自动为您的构建配置选择正确的库变体。
在 CCS 中、您可以在 Project Properties→Build→PRU Linker→File Search Path→Include library file 下添加该路径。
此致
Dhaval
对于未来的读者、
这是 OpenPRU 存储库较旧的 C 项目中的一个错误、已在 v2026.1.0 中修复。
在标签 v2026.0.0 上、您可以看到-disable_auto_rts 是从汇编项目复制到 CCS 导入的 C 工程设置中:
https://github.com/TexasInstruments/open-pru/blob/v2026.00.00/examples/empty_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/example.projectspec
但是、在 tag v2026.1.0 上、我更新了存储库中所有项目的 example.projectspec:
https://github.com/TexasInstruments/open-pru/blob/v2026.01.00/examples/empty_c/firmware/am64x-evm/icss_g0_pru0_fw/ti-pru-cgt/example.projectspec
如果您看到将工程导入到 CCS 中有任何其他问题、请告知我们以便我们进行查看。
此致、
Nick
很抱歉、我无意中将其设置为“解决了我的问题“、但现在只是重新尝试、选项 A 和选项 B 都不起作用。
当我尝试选项 A 时、我的构建错误没有任何变化:
构建目标:“ICSSG1_PRU0_AFDX.out“
调用:PRU 链接器
“c:/ti/ti_cgt_pru_2.3.3/bin/clpru -v4 -Ooff -define=SOC_AM64X --define=_debug_=1 --define=slicE1 -g -diag_warning=225 -diag_pwrap=off -diag_error=off -display_error_error=little -z -m“abi=ti“-heap_size=0x100
未定义首次引用
符号
----- ------------------------
__pruabi_mpyi ./PRU_Scheduler.obj
当我尝试选项 B 时、收到一个链接器找不到“libc.a“的额外构建错误:
构建目标:“ICSSG1_PRU0_AFDX.out“
调用:PRU 链接器
“c:/ti/ti_cgt_pru_2.3.3/bin/clpru -v4 -Ooff -define=SOC_AM64X --define=_debug_=1 --define=slicE1 -g -diag_warning=225 -diag_pwrap=off -diag_error=off -display_error_error=little -z -m“abi=ti“-diag_size=0x100
错误#10008-D:找不到文件“libc.a“
未定义首次引用
符号
----- ------------------------
__pruabi_mpyi ./PRU_Scheduler.obj
要解决此问题、需要执行额外的步骤。 在 Project Properties→Build→PRU Linker→File Search Path→ Add 下
对于库搜索路径、 我还必须将条目添加到:C:\ti\cgt_PRU_2.3.3\include
C:\ti\cgt_PRU_2.3.3\lib
这些文件路径添加与手动 添加“libc.a“配对、可解决错误。 谢谢。