I have a Linux, and another person has a Mac. We have the same solc
compiler version, except for the OS extension (I have 0.4.24+commit.e67f0147.Linux.g++
, they have 0.4.24+commit.e67f0147.Darwin.appleclang
). When we compile a list of contracts with solc --combined-json abi,bin ./*.sol
, the resulting bytecode is different for each contract, in the few bytes at the end. When we compile one contract with just --bin
, the bytecode is the same.
Why? Is anything about the EVM bytecode actually dependent on the OS? How could this make sense, given that it's uploaded to ethereum which runs on any machine? Do we need to use some solc flags to get the same output?