私の場合は、ライブラリcortex-m4をターゲットとするコードソースgccでビルドされています。そのライブラリをIARコンパイラでコンパイルされたプロジェクトにリンクしようとしています。あるコンパイラで作成された静的Cライブラリは、別のコンパイラと互換性がありますか?
これは可能ですか、ライブラリを新しいツールで再構築する必要がありますか?これに影響を与える要因は何ですか?
私の場合は、ライブラリcortex-m4をターゲットとするコードソースgccでビルドされています。そのライブラリをIARコンパイラでコンパイルされたプロジェクトにリンクしようとしています。あるコンパイラで作成された静的Cライブラリは、別のコンパイラと互換性がありますか?
これは可能ですか、ライブラリを新しいツールで再構築する必要がありますか?これに影響を与える要因は何ですか?
スタティックライブラリは、常にコンパイラ固有のいくつかのオブジェクトファイルのバンドルです。したがって、gcc
のlibとIAR
コンパイラをリンクしようとすると、リンクされるオブジェクトファイル形式の不一致によりコンパイル時にエラーが発生します。
IARを使用してライブラリを再構築する必要があります。
ARM用のIARコンパイラは、1つのコンパイラでファイルをコンパイルし、別のコンパイラでリンクすることができるAEABI形式をサポートしています。
GCCを使用してライブラリを構築し、AEABEを有効にしている場合は、IARツールを使用してプロジェクトビルドでスタティックライブラリを使用することができます。
@Brandon Yates Lindydancerの回答を確認し、それが動作しているかどうかをお知らせください。私が最後にやったことのない、クロスチェックに利用できるリソースはありません。彼が与えたテクニックは全く新しいものなので、可能かどうか知りたいと思っています。事前におねがいします。 –