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.

[参考译文] 编译器/PRU-CGT:PRU 编译器的默认包含目录

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/793275/compiler-pru-cgt-default-include-directory-for-pru-compiler

器件型号:PRU-CGT

工具/软件:TI C/C++编译器

大家好、我正在设置一个 make 环境来编译 PRU 编译。 为便于移植、我不想在 make 文件中指定任何特定于用户安装的路径名。 但是、PRU 编译器坚持为标准包含文件(例如 stdint.h)指定包含路径、这些文件通常是安装文件夹的一部分。 是否有办法指示编译器让它确定与其安装目录相关的默认包含目录?

谢谢

Brayan

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

    [引用 user="Brayan"]是否有方法指示编译器让它确定与其安装目录相关的默认包含目录?

    不幸的是、不  您可以使用选项--include_path 或环境变量 PRU_C_DIR。  有关详细信息、请在 PRU 编译器手册中搜索 标题 为#include 文件的搜索路径的子章节。  但是、请注意、本子章有错误。  每个 PRU_C_OPTION 实例改为 PRU_C_DIR。  我在 SDOWP 系统中提交了条目 CodeGen-6173以修复此错误。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 George 的答复。 我在编译器手册中确实找到了 PRU_C_DIR 选项并尝试使用它、但它似乎没有影响。 使用 PRU_C_DIR 对我来说是一个很好的分辨率、如果它起作用、您可以确认吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    如果您使用的是 Windows 系统,则会使用与此类似的命令...

    设置 PRU_C_DIR=C:\ti\ccsv8\tools\compiler\ti-cgt-pru_2.3.1\include;C:\ti\ccsv8\tools\compiler\ti-cgt-pru_2.3.1\lib 

    (笑声) 将该环境变量设置添加到当前命令 shell,但不会添加到整个系统。  要了解如何将环境变量添加到整个系统、请在 添加环境变量窗口上执行互联网搜索。   

    谢谢、此致、

    乔治

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

    尊敬的 George:感谢您提供有关如何添加环境变量的详细信息。 但是、我的问题是环境变量设置不起作用。 我已附加屏幕截图。 您可以观察到、即使在环境变量集'clpru'之后、也无法将路径解析为包含目录。 相反,它坚持通过'--include-path'命令行选项明确提供它们。

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

    [引用 user="Brayan]但是、我的问题是环境变量设置不起作用。我在 Ubuntu 下使用 PRU_C_DIR 环境变量与 PRU v2.3.1编译器进行了测试。

    不带默认 include 目录指定的命令失败:

    "/home/mr_halfword/ti/ccs830/ccsv8/tools/compiler/ti-cgt-pru_2.3.1/bin/clpru -v3 --include_path="/home/mr_halfword/ti/ccs830/ccsv8/ccs_base/pru/include --include_path="/home/mr_halfword/workspace_v8/AM5728_PRU_hello --include_path="--define=am5728 --define=icss1 --define=pru0 -g --printf_support=minimume-diag_warning=225 --diag_wrap=off --display_errors1 --endian=little --hello.c"
    ,不能在"mac_preproc_example.comprendature.c"中
    检测到。
    编译已终止。
    
    >>编译失败 

    PRU_C_DIR 环境变量设置为编译器的 include 目录会导致编译成功:

    (export PRU_C_DIR=/home/mr_halfword/ti/ccs830/ccsv8/tools/compiler/ti-cgt-pru_2.3.1/include;"/home/mr_halfword/ti/ccs830/ccsv8/tools/compiler/ti-cgt-pru_2.3.1/bin/clpru -v3 --include_path="/home/mr_halfword/ti/ccs830/ccsv8/ccs_base/pru/include "--include_path="/home/mr_halfword/workspace_v8/AM5728_PRU_hello --define=am5728 --define=icss1 --define=pru0 -g --printf_support=minimal --diag_warning=225 --diag_wrap=off --hello_support/preproc_number="-hello_build="-hello_mac_up_build="-preproc_us.com"--pred_use_remote_display_enusage=usion"---build="-build_us.com_with_remote_remote_remote_remote_remote_rem 

    [引用 user="Brayan]您可以观察到,即使在设置了环境变量'clpru'之后,也无法解析包含目录的路径。 相反、它坚持通过'--include-path'命令行选项明确提供它们。您的 PRU_C_DIR 环境变量设置为:

    /home/brayan/ti/ccs6/tools/compiler/ti-cgt-pru_2.2.1 

    而通过'--include-path'提供的路径为:

    /home/brayan/ti/ccs6/tools/compiler/ti-cgt-pru_2.2.1/include 

    即、尝试将 PRU_C_DIR 环境变量的值设置为/home/brayan/ti/ccs6/tools/compiler/ti-cgt-pru_2.2.1/include

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

    切斯特、您好、感谢您的回复。 我尝试将 PRU_C_DIR 指向 include 目录、但仍然收到相同的错误。 我已附加错误图像。

    下面是我的 shell 输出、供您参考。

    Brayan@Brayan-VirtualBox:~/Data/2vme/lc_2vme_pru/lc_2vme_pru env | grep PRU
    OLDPWD=/home/brayan/Data/2vme/lc_2vme_pru
    PRU_C_DIR=/home/brayan/ti-cgt-pru_2.3.1/include
    path=/home/brayan/bin:/home/brayan/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    :/home/brayan/ti-cgt-pru_2.3.1/bin PWD=/home/brayan/Data/2vme/lc_2vme_pru/lc_2vme_pru
    Brayan@Brayan-VirtualBox:~/Data/2vme/lc_2vme_pru/lc_2vme_pru scons
    :Reading Sconscript...
    缺点:已完成读取 SContscript 文件。
    缺点:建立目标...
    scons:`build/lc_2vme_pru0.out'是最新的。
    clpru -v3 -g -define="STDINT_header= "--define=am3359 --define=pru0 --diag_wrap=off --diag_warning=225 --relaxed_ansi -al --no_intrinsics --display_error_number --endian=little--hardware_mac=on --compile_only --obj_ext=.o --preb_with_prob_firmware=/home/brayan/Data/2vme/lc_2vme_pru/commoncomponents /home/brayan/Data/2vme/lc_2vme_pru/ssd1305
    
    
    /home/brayan/Data/2vme/lc_2vme_pru/commoncomponents/PSP/AM335X_PRU/src/spi_am335x_pru.c -common_b.3u_b.ines=/home/brayan/Data/2vme/lc_2vme_pru -am35u_board/common_b.pru_lines=/home/brayan/Data/2vme/lc_2vme_pru/commoncomponents/PSP/AM335X_PRU/src/spi_am335x_pru.c 文件/prob_b_b.mpi_b.ines=/am35x_board.trines=/prob_b_b.ines= 致命错误#1965:无法打开源文件"stdint.h"
    在编译"/home/brayan/Data/2vme/lc_2vme_pru/commoncomponents/PSP/AM335X_PRU/src/spi_am335x_pru.c 时检测到灾难性错误。
    编译已终止。
    
    >>编译失败
    缺点:***[build/firmware_bm_pru1_debug/commoncomponents /spP/AM335X_PRU/src/spi_am335x_pru.o]错误1
    缺点:编译因错误而终止。
    Brayan@Brayan-VirtualBox:~/Data/2vme/lc_2vme_pru/lc_2vme_pru 缺点
    :正在读取 SContscript 文件...
    缺点:已完成读取 SContscript 文件。
    缺点:建立目标...
    scons:`build/lc_2vme_pru0.out'是最新的。
    clpru -v3 -g -define="STDINT_header= "--define=am3359 --define=pru0 --diag_wrap=off --diag_warning=225 --relaxed_ansi -al --no_intrinsics --display_error_number --endian=litte-hardware_mac=on --compile_ext=-obj_ext=.o --prepref_with_firmware=/home/brayan/Data/2vme/lc_2vme_pru/commoncomponents /home/brayan/ti/ccsv6/tools/compiler/ti-cgt-pru_2.2.1/include /home/brayan/Data/2vme/lc_2vme_pru/commoncomponents/PSP/AM335X_PRU/src/spi_am335x_pru.c -cn_common_b.ines=/home/brayan/Data/2vme/lc_2vme_pru -cn_b.pru.ines=-am35u_b.cn/spru.cn/spru.trendore_components/prob.cc=/home/brayan/Data/2vme/lc_2vme_pru/ssd1305 -out_b.cn_b.cn_b.cn_b.cn_b.cn/spru.cn_b.mp.cc=-out.ines=-cn/sr.cn_b.mp.ines=-cc=-am35u.ines=-cc=-cn_b.cn/spru.ines=-cc=-cn_b.ines=-cc=-cn_supers/prob.cn/spru.cn
    
    
    "--define=am3359 --define=pru0 --diag_wrap=off --diag_warning=225 --relaxed_ansi -al --no_intrinsics --display_error_number --endian=little--hardware_mac=on --compile_only --obj_extension=-pre_with_debug_me./home/brayan/Data/2vme/lc_2vme_pru /home/brayan/Data/2vme/lc_2vme_pru/commoncomponents -rc/ude_bm_rc/rc/ude_b.try_rc/y=ma=/home/brayan/Data/2vme/lc_2vme_pru/ssd1305 -rc/ude_b.rc/ine_b.tran_guide_guide_guide=ma-rc/guide_guide_guide=/home/brayan/ti/ccsv6/tools/compiler/ti-cgt-pru_2.2.1/include
    指定了目标文件、但未启用链接
    [main_pru1.c]
    clpru -v3 -g -z -m"build/lc_2vme_pru1.map"--stack_size=0x400 --common-pru_size=0x400 --reread_lib_core/pru_examples/am3u/pru/amu_model/amu/pru/pru/amu_ms/pf=/rc/m_ms/prob_ms/prob./pru/pru/pru/p1_model/pru/pru/pru/pru/pru/pru/pru/pru/p1_ms/ms/ms/prob.ips_/pru/pru/pru/pru/pru/pru/pru/pru/pru/pru/pru/ms/ms/ms/ms/ms/profiles/ms/ms/ms/profiles/ms/p3u/pru/pru/pru/pru/pru/pru/p1 /commoncomponents/PSP/AM335X_PRU/lib
    
    缺点:已完成构建目标。
    Brayan@Brayan-VirtualBox:~/Data/2vme/lc_2vme_pru/lc_2vme_pru
    

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

    [引用 user="Brayan"]我尝试将 PRU_C_DIR 指向 include 目录,但仍遇到相同的错误。

    您不会得到相同的错误。  缺少包含文件错误消失。  剩下的就是这条警告的3个实例...

    [quote user="Brayan">>警告:指定了目标文件、但未启用链接

    此警告不会阻止成功构建。   

    要避免此警告,您需要从编译命令中删除此警告...

    o 路径/到/部分/文件。o

    在 GCC 和类似的编译器上、这是目标文件的命名方式。  TI 编译器并非如此。  对于 TI 编译器、这两个参数意味着两个无关的东西。  选项-o 表示使用默认优化级别进行编译。  命名目标文件是导致警告的原因。  仅在链接时有效。

    话虽如此、我建议您使用优化进行构建。   您将提高尺寸和速度。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 George、我将使用优化。 不过、在编译时、我仍然会遇到这些错误。 下面我已经解释了我在上一次答复中粘贴的 bash shell 日志的详细信息。

    第1-5行-显示环境变量 PRU_C_DIR 的定义以及包含文件的路径。
    第6-20行-当未将 Include 路径指定为编译器选项的一部分时、显示编译抛出错误。 第14行包含错误详细信息。
    第21-34行-在编译器选项中明确提供包含路径时显示成功构建。

    我在 bash 终端中将这些作为一系列步骤运行以显示错误。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉,我忽略了...

    [引用 user="Brayan"]第6-20行-当未将 Include 路径指定为编译器选项的一部分时显示编译抛出错误

    我无法重现此行为。  我需要您提供一个测试案例。  通常、我会要求提供预处理文件。  但是、这在这里是不可能的、因为错误发生在预处理期间。  因此、请尽量缩小测试用例。  我需要 C 源文件及其包含的所有文件(直接或通过其他文件)。  我不需要 RTS 头文件。  将所有这些文件放入一个 zip 文件中、然后将其附加到下一篇文章中。

    谢谢、此致、

    乔治

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

    尊敬的 George:我们一直在使用 Sns (基于 Python 的构建工具)、代码库具有许多依赖项。 因此、为了重现此问题、我尝试使用 CCS 安装附带的 gmake 实用程序。

    我创建了一个具有两个版本的示例项目、

    版本1 -在编译器选项中指定了包含路径

    版本2 -不含包含路径。

    要生成:从工程的调试文件夹中执行"C:\ti\ccsv8\utils\bin.gmake -k -j 8 clean -O"命令。

    观察结果:版本1生成编译、但版本2抛出 include 文件错误。 但是、在定义 PRU_C_DIR 环境变量版本2后、能够成功构建。 所以你和切斯特所说的是对的。 抱歉将其拖至。 我已经为您的 reference.e2e.ti.com/.../pru_5F00_test_5F00_with_5F00_include_5F00_path.7ze2e.ti.com/.../pru_5F00_test_5F00_without_5F00_include_5F00_path.7z 附上了该项目的两个版本

    PS:在 SCONS make 环境中仍然存在问题、但我认为这与 PRU CGT 工具无关。 如果我无法修复缺点、我将转到 gmake。

    非常感谢、感谢您的帮助。