2017-03-02 22 views
2

異なるGCCバージョンでコンパイルされたソースから生成されたオブジェクトを共有ライブラリにリンクすることは安全ですか?異なるGCCバージョンのコンパイル済みオブジェクトファイルをリンクするのは安全ですか?

私はそうは思いませんが、使用されているGCCにコード生成と最適化の改善に関して違いがない場合はどうでしょうか?どのGCCコンパイラが下位互換性がないかを知るための情報はありますか?

私の質問にもバイナリを懸念されて、私は私の理解から

https://gcc.gnu.org/onlinedocs/gcc/Compatibility.html

に見えた彼らは、同じABI

+1

GCCのバージョンはどのように異なりますか? GCC 2.xのコードをGCC 6.xにリンクしようとすると、問題が発生する可能性があります。 4.9.4と4.9.3を混在させる場合、問題はありません。私は4.xまたは5.xのコードと6.xのコードを混在させても問題は発生しませんでしたが、問題が見つからないという保証はありません。 OTOHでは、プラットフォーム用のABI(アプリケーションバイナリインターフェイス)は、通常、何年もの間安定していて、あらゆる種類のコンパイラがそれに対応しているので、問題があった場合には驚かれるでしょう(2.xと6であっても)。 xは混在しています - オブジェクトファイルの種類はOKです)。 –

+0

@JonathanLeffler 4.4から4.7まで?私はテスト中に何の問題も見つけられませんでしたが、私はテストがどのようなものであるかはわかりません。何が起こる可能性のある問題があるか分かりません。 – Bionix1441

+1

私の見解では部分的には経験に基づいて、どんな問題にも直面するだろう。私はその競合をサポートするドキュメントを引用することができるかどうかはわかりません。これは、コメントの代わりに答えを出していない主な理由です。 –

答えて

1

に準拠として、異なるGCCのバージョンは、そうした後限り互換性があるでしょうウェブに関する研究、そしていくつかのGCCリリースノートを読むと、ABIの変更がなければGCCは下位互換性があるようです。 一般に、これはリリースノートに記載されています。

異なるGCCコンパイラとGCCリンカ(GCCの異なるバージョンとは異なる意味で)を使って実験しましたが、互換性がない(異なるABIバージョン)ときにリンカエラーが出ました。

関連する問題