【问题标题】:"windows.h" Not Found Using Eclipse SPARC bare-C Compiler使用 Eclipse SPARC 裸 C 编译器未找到“windows.h”
【发布时间】:2017-04-19 22:34:33
【问题描述】:

好的,所以我正在尝试将模拟(通过 TSIM)LEON3 处理器连接到 UART 终端。如果我没记错的话,我认为我需要编译一个 C 程序以使其能够与终端对话,因为我很难以另一种方式进行操作。
我找到了一些用于 UART 通信的源代码here,一切似乎都还可以。
但是,我在 Eclipse 中使用 SPARC Bare C Toolchain 编译它时遇到问题,因为它说 windows.h 文件不存在。现在我知道它存在,因为我已经使用 GCC 工具链成功编译了它,并且在网络上找不到任何类似的案例来说明为什么会发生这种情况。

有没有人遇到过类似问题或知道解决方案?
此外,如果您知道我在 LEON3 UART 通信方面做错了事,请告诉我,我会离开。

谢谢。

【问题讨论】:

    标签: c eclipse mingw uart sparc


    【解决方案1】:

    BCC 是一个交叉编译器,面向独立的、基于 LEON3 和 LEON4 的环境。作为一个交叉编译器,它的工作是为与它运行的环境不同的环境构建二进制文件。

    相关的头文件描述了程序在其运行时(目标)环境中可用的功能。构建环境库及其头文件在交叉编译时是不相关的,因为构建环境和目标环境不同。 BCC 仅公开其编译环境的标头是正确的,并且该环境不提供 Windows API 函数。如果您尝试构建的代码依赖于 Windows API,那么您需要对其进行修改以删除该依赖关系,否则会发现一些不同的东西。

    另一方面,我强烈怀疑您在处理这整件事时的方式是错误的。特别是,当你说,

    我认为我需要编译一个 C 程序以使其能够与终端对话

    听起来您认为您要构建某种帮助程序,但如果这是您的想法,那么您要么是为错误的环境构建它,要么您的想法完全错误。

    如果您想要一个与模拟机器对话的 Windows 程序,那么您应该将其构建为一个 Windows 程序,而 BCC 不会这样做。在这种情况下,您应该使用 MinGW 的 gcc 或其他用于模拟器主机环境的 C 编译器。此外,与仿真环境的 UART 的主机端接口是仿真器的一个方面。我不知道您使用的是什么模拟器,但它可能不会将该接口的主机 (Windows) 端显示为 UART,并且可能根本不需要使用 Windows API。

    或者,如果您确实打算为独立的 LEON3 目标环境构建程序,那么您需要了解,当它运行时,它将是在该环境中运行的唯一程序 .这就是“独立”的意思——下面没有操作系统,因此没有单独的进程,通常甚至没有多个执行线程。因此,您不需要辅助程序;你只需要一个程序。

    The BCC documentation 讨论了那里可用的库,特别是,它描述了在那个环境中,文件 I/O 仅允许在映射到 UART A 的标准输入和输出流上。因此,如果您使用 BCC 构建程序以在模拟器中运行,那么您不需要为此做任何特殊的事情来与 UART 通信。您只需使用针对stdinstdout 的stdio 函数。

    另一方面,如果您在模拟环境中运行实际操作系统,那么要构建在其上运行的程序,您应该为该环境使用本机编译器,in环境,或者针对该托管环境的交叉编译器。无论哪种方式,BCC 都不是这样的编译器,但 GCC 可能是。无论如何,由于 Windows 不能在 LEON3 上运行,可以肯定地说,如果这是您想要做的,那么您仍然需要不依赖于 Windows API 的东西。

    【讨论】:

    • 感谢您的详细解答。我仍然不明白如何访问通过标准输入/输出发送/接收的数据?我正在使用 TSIM,它没有模拟(我的错)它正在模拟 LEON3。由于宿主环境是windows,我不需要知道这些数据通过什么COM端口?
    • @MrPhooky,“模拟”和“模拟”意味着足够接近同一事物,我的回答将其解释为在 Windows / x86(_64) 上运行的虚拟机环境,并以 LEON3 呈现给任何事物里面。这似乎是对 TSIM 的准确描述。由 BCC 构建并在裸 TSIM 机器上运行的代码将通过读取 stdin 从该机器的 UART A 读取,并通过写入 stdout 来写入它。请参阅 TSIM 的文档以了解如何访问这些频道的另一端
    猜你喜欢
    • 1970-01-01
    • 2014-04-28
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多