工具/软件:TI C/C++编译器
大家好、我正在设置一个 make 环境来编译 PRU 编译。 为便于移植、我不想在 make 文件中指定任何特定于用户安装的路径名。 但是、PRU 编译器坚持为标准包含文件(例如 stdint.h)指定包含路径、这些文件通常是安装文件夹的一部分。 是否有办法指示编译器让它确定与其安装目录相关的默认包含目录?
谢谢
Brayan
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.
工具/软件: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以修复此错误。
谢谢、此致、
乔治
如果您使用的是 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,但不会添加到整个系统。 要了解如何将环境变量添加到整个系统、请在 添加环境变量窗口上执行互联网搜索。
谢谢、此致、
乔治
[引用 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 表示使用默认优化级别进行编译。 命名目标文件是导致警告的原因。 仅在链接时有效。
话虽如此、我建议您使用优化进行构建。 您将提高尺寸和速度。
谢谢、此致、
乔治
很抱歉,我忽略了...
[引用 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。
非常感谢、感谢您的帮助。