如何在外部服务器上安装和使用嵌入式C编译器?

如何在外部服务器上安装和使用嵌入式C编译器?,c,compiler-construction,linker,embedded,continuous-integration,C,Compiler Construction,Linker,Embedded,Continuous Integration,简短问题 是否有一种公认的方式可以在远程服务器上运行嵌入式软件项目的编译器/链接器,并且仍然能够在本地计算机上编程和调试软件 注意:我知道每个IDE都是不同的,所以我想要的是如何定义一个工作流来完成这个任务,假设IDE可以使用从远程服务器构建的.o/.elf文件来运行 关注领域 1) 与虚拟Windows计算机联网。 2) 如何/何时将源代码传输到要生成的服务器 背景 我们的软件团队使用的每个微处理器系列都需要自己的编译器、IDE和程序员。这一点,加上加班,造成了许多需要克服的困难 1) 每个开

简短问题
是否有一种公认的方式可以在远程服务器上运行嵌入式软件项目的编译器/链接器,并且仍然能够在本地计算机上编程和调试软件

注意:我知道每个IDE都是不同的,所以我想要的是如何定义一个工作流来完成这个任务,假设IDE可以使用从远程服务器构建的.o/.elf文件来运行

关注领域
1) 与虚拟Windows计算机联网。
2) 如何/何时将源代码传输到要生成的服务器

背景
我们的软件团队使用的每个微处理器系列都需要自己的编译器、IDE和程序员。这一点,加上加班,造成了许多需要克服的困难

1) 每个开发人员都需要自己的、通常价格昂贵的许可证。
2) 要选择另一个开发人员启动的项目,需要格外小心,以确保所有编译器设置都相同。
3) 支持旧版软件可能需要与当前安装的编译器冲突的旧编译器。
... 这一清单不胜枚举

编辑:2011年10月7日下午1:30中央标准时间 1) 我所说的编译器实际上是交叉编译器
2) 该系统理想支持的处理器系列的简短列表:摩托罗拉Coldfire、PIC和STM8。
3) 我们的Coldfire编译器是GCC的一个变体,但我们必须支持它的多个版本。所有其他编译器都使用不提供浮动许可证的特定于目标的编译器。
4) 为了解决littleadv问题,我想实现的是一个外部构建服务器。
5) 目前,我们在一个在线存储库中使用SVN和GIT的组合来进行版本控制。事实上,这就是我将文件传输到构建服务器的方式。
6) 对于大多数编译器,我们都使用Windows

我现在相信,未来的发展方向是外部构建服务器。还有一些障碍需要克服。我假设我们必须通过版本控制软件将源文件传输到服务器。看到多个产品线如何需要访问相同的编译器,为每个项目提供一个实例似乎并不实际


为每个编译器创建一个包含构建、源代码、包含、输出等文件夹的存储库有意义吗。。。那么,用户端是否有脚本负责将文件从IDE的文件结构移动到编译器所需的结构?这种方法可以防止项目存储库被破坏,并给出一个编译器被使用了多少次的原因。感谢到目前为止所有伟大的回应

我不确定我是否理解你的意思,但我会尽力回答我认为问题是:-)

首先,你说的是交叉编译器,对吗?您正在一个系统上编译要在另一个系统上运行的代码

其次,您寻找一个“浮动”许可证模型,而不是每个开发人员都有一个专用的编译器许可证

第三,您希望有一个构建机器,每个人都将在其中编译,而不是每个开发人员在自己的机器上编译

这些问题并不相同。我将尝试报道他们:

  • 交叉编译器-有些是免费的,有些是授权的。有些是IDE自带的,有些只是可以集成到Eclipse/VS/SlickEdit/vi/whatelse中的命令行编译器。我不知道你在用哪一个,所以让我们来看看龙卷风(VxWorks编译器)。它有自己可怕的IDE,但可以集成到其他IDE中(我直接使用了SlickEdit和它的项目文件,工作起来很有魅力)。Tornado编译器需要一个许可证,并且有几个不同的模型,因此我们将在下面的两点中介绍它

  • 浮动许可证。例如,Tornado可以为每个安装模型提供单个许可证,也可以为每个请求分配许可证的浮动许可证。如果您使用的是构建机器,那么您需要一个单一的许可证(在这种情况下,一次只能运行一个实例,这不符合目的),或者需要浮动许可证来一次运行多个实例。一些跨编译器/库根本不需要许可证(例如各种GCC风格)

  • 构建机器-我曾经体验过使用VxWorks Tornado作为PC上的专用编译器和构建机器安装

  • 对于构建机器,您需要一种将代码传递到构建的方法。这对你来说是个问题#2:

    2) 如何/何时传输源 要生成的服务器代码

    通过网络共享不是一个好主意,因为网络延迟将使编译时间难以忍受。相反,请执行以下操作之一:

  • 在构建机器上安装源代码管理,让开发人员通过源代码管理传递代码。这带来了破坏源代码管理的风险,因此我们所做的是:

  • 所有开发人员都直接在构建机上签出文件(一个有大量存储的大型UNIX系统),每个开发人员都会使用网络共享(SAMBA或NFS)编辑文件,这在1GB公司局域网上很好,并在构建机上本地编译。有些人会直接在Unix系统上使用Tornado IDE的vi/emacs/Unix版本进行编辑,这是我讨厌的。这也解决了你的问题#1:

  • 1) 与虚拟Windows的网络连接 机器

    (它不一定是一个虚拟的Windows机器,如果你有从Linux到嵌入式系统的交叉编译器,Linux也可以工作)


    希望这会有所帮助。

    我不是这方面的专家,但是否有可能为每个目标环境创建一个虚拟机。然后,开发人员可以在其本地计算机上启动所需的VM映像。

    似乎您正在尝试的是一个“”版本,其中只有一个构建服务器。这可能是p