gpt4 book ai didi

c - Code::Blocks 构建的问题

转载 作者:行者123 更新时间:2023-11-30 15:58:48 27 4
gpt4 key购买 nike

我正在使用 Code::Blocks 在 Windows 中开发 C 应用程序。当我构建应用程序时,它会按预期构建并运行。当我的同事构建应用程序时,它会构建但在运行时行为不正确。创建的exe文件大小也不同。 Code::Blocks 项目存储在 subversion 中,据我们所知,我们双方都是相同的。

任何人都可以提出可能导致差异的原因吗?

最佳答案

总结一下:

  • 从 svn checkout 相同的项目文件和源
  • 据您所知,相同的库
  • 大概使用相同的编译器
  • 不同大小的可执行文件
  • 不同的程序行为

不同的编译器,甚至不同的版本,可以解释不同大小的程序,但不能解释不同的行为,除非存在严重的编译器错误,而这是极不可能的。不过,您可以向编译器询问其版本,以 100% 确定(如果您使用 GNU 编译器,请尝试例如 gcc --version)

不同版本的静态库可以类似地解释不同大小的程序大小,但应该通常不会导致不正确的行为。为了将“据我所知”转变为确定性,您和您的同事应该要么对这些库进行全新安装(来自相同的约定版本),要么比较校验和(例如md5sum)。

如果您可以安全地排除同事计算机上存在恶意软件的可能性(这可以很好地解释这两种症状!),“不同大小的程序和不同/错误的行为”组合的可能原因是你们中的一个人启用了一些优化选项或编译了不同的语言标准,并且同时,源代码包含标准不允许的代码(但可以容忍,可能带有警告)或触发未定义的行为。

始终至少使用-Wall -Wtraditional进行编译,并修复编译器提示的任何内容,即使您认为这很愚蠢。总是。这可以防止 99% 的“有时表现奇怪”类型的错误。实际上,编译器警告并不是一种烦恼,而是一种帮助。

请注意,在两个不同的地方可能会出现不同的构建选项,即使这不是很明显。首先,项目文件可能已在本地更改但未提交。只要对方没有提交冲突的版本,您就永远不会看到来自 Subversion 的警告。其次,您的同事可以在编译器首选项中全局设置一些选项。这些将应用于每个项目。

要排除不同build设置的可能性,请将每台计算机上的构建日志保存到文本文件中,并对它们进行比较。

关于c - Code::Blocks 构建的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9486493/

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