【发布时间】:2017-04-01 12:39:50
【问题描述】:
我已共享给我的代码,它可以在一个 linux 系统上编译,但不能在较新的系统上编译。错误是 uint32_t 没有命名类型。我意识到这通常可以通过包含<cstdint> 或stdint.h 来解决。源代码不包含这些,我正在尝试寻找一个不需要修改的选项,因为我无法控制内部业务实践。由于它在一台机器上按原样编译,因此他们不希望更改源代码。
我不确定这是否重要,但旧系统使用 gcc 4.1,而新系统使用 gcc 4.4。如果需要,我可以安装不同版本的 gcc,或者在较新的机器上添加/安装库/包含文件,我可以完全控制那台机器上的内容。
在不修改源代码的情况下尝试在我的机器上编译此代码有哪些选择?如果需要,我可以提供其他详细信息。
【问题讨论】:
-
所以他们实际上不希望代码正确?相当愚蠢的恕我直言。
-
他们不想修复代码以便使用更新的编译器进行编译?然后他们应该坚持使用他们知道的设置(假设任何人都知道它足以重现它)。
-
阿兰,我知道并同意。我怀疑这是一家公司第一次做出愚蠢的决定,但我必须解决它。
-
我查找了 porting guide for GCC 4.4:[...] 使用的
uint32_t不包含将不再编译。 (第 C++ 节语言问题 - 标题依赖项更改) -
代码损坏。 用于编译的事实与该事实无关。