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.
工具/软件:
你(们)好
我一直在尝试在 Linux 环境(VM;Ubuntu 24.04 LTS;CCSTheia v20.1.0.6_1.7.0)中进行编译。
现提出以下意见
a)由于设置了不正确的括号、报告了错误(我认为我已经找到问题-详情请参阅下文)
b)-mthumb -O0之后的两个 include 指令为空
这是尽管根据 subdir_rules.mk 文件、应该是提到的 Projecttroot 和 projectroot/configname 文件夹、在工程设置中奇怪的是、这些文件夹设置为正确的值时可以在工程设置中使用
以下是 IDE 启动过程:
如果按如下方式运行、它将在这些 include 指令中生成正确的路径
回到括号问题:
我发现、一旦从项目设置(定义如下;在 Windows 上工作无缺陷)中删除了自定义 Debug_remove 宏定义、问题就会自行解决
因此、Linux 上的 CCS 显然与直接通过编译器设置(而不是代码文件)定义宏等函数有关...
快速跟进:
这两个问题是互连的。例如、如果在启动 IDE 时未设置已讨论过的变量、但从工程设置中删除了 DEBUG_REMOVE 定义、则两个 Include 指令仍然具有不正确的值
Marc、
感谢您报告这些问题。 我们将尝试重现这些问题、并在我们能够做到的情况下将错误归档以跟踪它们。
此致、
Ricky
Unknown 说:因此、显然 Linux 上的 CCS 与直接通过编译器设置(而不是代码文件)定义宏等函数存在问题...
很抱歉、对此延迟的回复。 我可以重现问题。 如您所说、我在 Linux 上看到问题。 Windows 不会出现此问题。
为了从公式中删除 CCS IDE、我直接在命令行中调用编译器。 带有 debug_remove 定义(带括号)的第一个调用出现了相同的问题。 删除该文件时、文件构建良好:
在 Windows 上没有问题:
我将提请编译器专家注意此主题、以获得更多见解。
我认为在 Linux 上、您可以像这样避开括号:
debug_remove\(...\)=/*...*/
这不是编译器问题。 这是一个关于命令 shell 引用规则的问题。 Windows 命令 shell 是如何做到的? Linux 命令 shell 是如何做到的? 这是不一样的。 为了说明这一点、我编写了一个名为的简短程序 ECHO_CMD_LINE ...
#include <stdio.h> int main(int argc, char *argv[]) { int i; for (i = 0; i < argc; i++) puts(argv[i]); return 0; }
当我在 Windows 上运行它...
$ .\echo_cmd_line -DDebug_REMOVE(...)=/*...*/ .\echo_cmd_line -DDebug_REMOVE(...)=/*...*/
当我在 Linux 上运行时...
$ ./echo_cmd_line -DDebug_REMOVE(...)=/*...*/ Badly placed ()'s.
在重要的情况下、此处是特定的 Linux shell /bin/tcsh 。 为了修复它,我建议使用单引号...
$ ./echo_cmd_line '-DDebug_REMOVE(...)=/*...*/' ./echo_cmd_line -DDebug_REMOVE(...)=/*...*/
在我使用的每一个类 Unix 的 shell 中,单引号总是告诉 shell 不处理引号内的任何内容,而是按原样传递它。 在 Windows 上,双引号通常具有相同的效果,但我有一个模糊的记忆被烧了几次。
谢谢。此致、
-乔治
我知道、在 Linux 上、人们可以避开括号——但我 希望当有人以所描述的方式定义一个类似宏的函数时、IDE (知道它运行的是操作系统;显然)会为用户这样做
IDE (知道它运行的操作系统;很明显)会为用户执行此操作
CCS 当前不考虑所使用的 shell /操作系统。 我们可以看看是否可以考虑这一点。
我们可以查看是否可以说明这一点。
我为此提交了一张票。 跟踪链接: https://sir.ext.ti.com/jira/browse/EXT_EP-12388