linux的so文件的二进制差异

问题描述

在Linux环境下,两次编译一个rpm包,但是两次编译出来的某一个so文件有二进制差异

# cmp /home/2/aarch64_base/lib/libsatlas.so.3.10 /home/3/aarch64_base/lib/libsatlas.so.3.10
/home/2/aarch64_base/lib/libsatlas.so.3.10 /home/3/aarch64_base/lib/libsatlas.so.3.10 differ: byte 473, line 1

两次编译的log中,编译这个so文件的命令也没有差异
第一次:

# grep -A 3 "\-o libsatlas.so.3.10" 2.log 
/usr/bin/gcc  -g -Wa,--noexecstack -fPIC -Wl,-z,relro   -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -shared -o libsatlas.so.3.10  \
           \
           -Wl,-soname,"libsatlas.so.3" \
           -Wl,--whole-archive liblapack.a libf77blas.a libcblas.a libatlas.a /root/rpmbuild/BUILD/ATLAS/liblapack_pic_pruned.a -Wl,--no-whole-archive -L/usr/lib/gcc/aarch64-linux-gnu/7.3.0 -lgfortran  -lc -lpthread -lm -lgcc

第二次:

# grep -A 3 "\-o libsatlas.so.3.10" 3.log 
/usr/bin/gcc  -g -Wa,--noexecstack -fPIC -Wl,-z,relro   -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -shared -o libsatlas.so.3.10  \
           \
           -Wl,-soname,"libsatlas.so.3" \
           -Wl,--whole-archive liblapack.a libf77blas.a libcblas.a libatlas.a /root/rpmbuild/BUILD/ATLAS/liblapack_pic_pruned.a -Wl,--no-whole-archive -L/usr/lib/gcc/aarch64-linux-gnu/7.3.0 -lgfortran  -lc -lpthread -lm -lgcc

目前是想消除这个so文件的二进制差异,但是不知道怎么去排查原因

阅读 3.8k
1 个回答

首先确认该 so 文件所依赖的文件是否相同,例如 xxx.a

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题