gpt4 book ai didi

c - 使用 Eclipse SPARC bare-C 编译器未找到 "windows.h"

转载 作者:行者123 更新时间:2023-11-30 19:10:47 25 4
gpt4 key购买 nike

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

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

谢谢。

最佳答案

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

相关头文件描述了程序在其运行时(目标)环境中可用的函数。交叉编译时,构建环境库及其头文件不相关,因为构建环境和目标环境不同。 BCC 正确地仅公开其编译环境的 header ,并且该环境不提供 Windows API 函数。如果您尝试构建的代码依赖于 Windows API,那么您需要修改它以删除该依赖项,或者找到不同的东西。

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

I believe I need to compile a C program to enable it to talk with a terminal

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

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

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

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

第三,如果您在模拟环境中运行实际的操作系统,那么要构建在其上运行的程序,您应该使用该环境的 native 编译器,in环境,或者针对该托管环境的交叉编译器。不管怎样,BCC 不是这样的编译器,但 GCC 可能是。不管怎样,由于 Windows 不能在 LEON3 上运行,所以可以肯定地说,如果这就是您想要做的事情,那么您仍然需要一些不依赖于 Windows API 的东西。

关于c - 使用 Eclipse SPARC bare-C 编译器未找到 "windows.h",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40975856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com