オブジェクト生成物の確認方法とは
Q&A
Closed
はじめまして底辺技術者です。
働いていると、正解が分からないことに翻弄されます。
例えばです。
ソースコードを書き換えたとして、
編集前後で動作が変わっていないことを確認したいとき、コンパイル・リンクした生成物(オブジェクトファイル)が一致すれば、動作が変わらないことが確認できたと言えると思います。
そのオブジェクトファイルの一つに、バイナリファイルがあります(※1,2)が、これが大抵うまく一致してくれませんでした。
本当にソースコードの動きが変わらない場合でも、一致が確認できないことがあります。
ネットでは「32ビット以上のマイコンだと日付情報を埋め込みがちだから」とか、「コンパイラによりけり」とかでオブジェクト生成物が一致しないという情報が出てきました。ただ、こういった一致しない原因に関する情報はしばしば出てくるのですが、バイナリファイルの見方やこういう文字コードはこういう情報が入ってるかもといった具体例はあまり見かけません。
このオブジェクトファイルが一致することが確認できると、
ソースコード編集前後で動作が変わっていないことが確認できて評価に有用である。や、開発環境の構築手段として、生成物が一致することを確認することが有用である。といったことが言えます。
生成物に差分が生まれたときはどのようにして、日付のみ差分であることなど述べるとよいのでしょうか。
コンパイラや機械語のしくみを理解するしかないのでしょうか。
こういった事柄にとどまらず、日々正解をつかめずにいます。
※1 バイナリデータとは「テキストデータ(文字だけのデータ)以外のデータ」
https://wa3.i-3-i.info/word1147.html
※2 バイナリ比較の意義とは
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11236273851?__ysp=44OQ44Kk44OK44Oq44OV44Kh44Kk44Or44CA5q%2BU6LyD
文章力は壊滅的なためご容赦ください。
Ps.たくさんのご回答ありがとうございました。
質問文章もかなり読みづらい文章で、てっきり壁打ちになると思っていましたため、回答いただいていて少々驚いています。解決に至ったわけではないですが、自身の至らなさと諸事情でクローズしようと思います。ありがとうございました。