相关疑难解决方法(0)

每个构建中的二进制对象文件更改

每次进行构建时使用G ++ GNU编译器进行编译时,如果不更改源代码,我会得到一个不同的二进制对象文件.是否有一个编译选项,每次都会给我相同的二进制文件.

c++ g++

5
推荐指数
1
解决办法
1990
查看次数

GCC .obj文件输出不确定(.debug_info,PROGBITS部分)

我的编译命令是
C:\work\PROJ-test\QNX_SDK\host\win32\x86/usr/bin/qcc -c -Wc,-frandom-seed="sadfsasafssadsa" -Wc,-MP,-MT,C:/work/PROJ-test/N_Manag/src/bld/N_Manag//armle-v7/release/nav_event_rcv.cpp.o,-MMD,C:/work/PROJ-test/N_Manag/src/bld/N_Manag//armle-v7/release/nav_event_rcv.cpp.d -Vgcc_ntoarmv7le -w9 -shared -O3 -ggdb3 -DBUILD_VERSION= -DPASLOGOPTIONS=0x02 -DPASLOGAPPZONES=31,23,30,9,8,3 -DNS1_5PORT -DBOARD_TYPE=PRODUCTION C:/work/PROJ-test/N_Manag/src/nav_event_rcv.cpp -o C:/work/PROJ-test/N_Manag/src/bld/N_Manag//armle-v7/release/nav_event_rcv.cpp.o

当我连续两次运行此命令时,这两个.obj文件是不同的,而不仅仅是来自时间戳的几个字节.

我们正在切换构建系统,因此我们希望我们的构建与二进制兼容.我的绝大多数目标文件都是二进制相同的.一些使用__DATE____TIME__宏的人有几个字节不同但这一个是完全不同的!

我使用了一个elf-dump实用程序,发现两个编译之间截然不同的部分就是这个

  [544] .debug_info
       PROGBITS        00000000 047d70 1021ed 00   0   0  1
       [00000000]: 
Run Code Online (Sandbox Code Playgroud)

但我不知道PROGBITS包含什么以及为什么它包含用于连续编译的不同项目.这个网站只是声明这PROGBITS是一个属性,而不是它所指示的内容(以及为什么它对于连续编译而言是不同的).

如何生成.obj二元确定性?

思考

不知何故,正在编译的代码实际上正在修改的.debug_info部分.obj.这.cpp使用了一堆boost库; 这可能是原因吗?

UPDATE

我查看了生成的汇编文件,它们是不同的.从某种意义上讲,结果.obj是不同的.
仍然没有理由为什么会发生这种情况.

更新qcc上面 的命令不是执行的实际编译器命令:qcc是编译器"重定向器",它将调用与-V参数匹配的编译器."真正的"编译器调用是这样的:

C:/work/Proj/QNX_SDK/host/win32/x86/usr/lib/gcc/arm-unknown-nto-qnx6.5.0eabi/4.4.2/cc1plus -Wall -O3 -ggdb3 -DBUILD_VERSION= -DPASLOGOPTIONS=0x02 -DPASLOGAPPZONES=31,23,30,9,8,3 -DNS1_5PORT -DBOARD_TYPE=PRODUCTION …

c++ gcc boost qnx qcc

5
推荐指数
1
解决办法
743
查看次数

如何找出编译源代码的日期?

是否可以存储和显示我的项目编译日期?

我想在程序启动时打印这个日期,以便知道使用的是哪个版本.目前,我正在手工完成这项工作,这相当麻烦.

我正在使用Visual Studio 2010.

c++ compilation date

3
推荐指数
2
解决办法
2172
查看次数

如何检查两个可执行二进制文件是否是从相同的源代码生成的?

例如,我有两个 C 二进制可执行文件。如何确定两者是否使用相同的源代码生成?

c executable binaryfiles

3
推荐指数
1
解决办法
223
查看次数

标签 统计

c++ ×3

binaryfiles ×1

boost ×1

c ×1

compilation ×1

date ×1

executable ×1

g++ ×1

gcc ×1

qcc ×1

qnx ×1