-3

プロジェクトチップ:nordic nrf51822 256KB NRF51 SDK バージョン:6.1

ライセンスの問題により、プロジェクトを Windows キールから OSX GNU に変換しています。

以前のプロジェクトで keil-arm コンパイラによって作成された .o ファイルがいくつかあります。私はそれらのcファイルを持っていません。

プロジェクトをコンパイルしようとしましたが、それらの .o ファイルをリンクしようとすると、このようなエラーで終了します。

gcc は keil-arm コンパイラからコンパイルされたオブジェクト ファイルでコンパイルできませんか?

/usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm- none-eabi/bin/ld: Dwarf エラー: Dwarf バージョン '0' が見つかりました。このリーダーはバージョン 2、3、および 4 の情報のみを処理します。....\RedCarrot_ver2(c)\afe4403.c:(.text+0x0): _printf_d への未定義参照' /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/ gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: Dwarf エラー: Dwarf バージョン '11822' が見つかりました。このリーダーはバージョン 2 のみを処理します、3および4の情報。....\RedCarrot_ver2(c)\afe4403.c:(.text+0x0):_printf_int_dec への未定義参照' /usr/local/gcc-arm-none-eabi-4_9-2015q2/bin/../lib/gcc /arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: Dwarf エラー: Dwarf バージョン '23598' が見つかりました。このリーダーはバージョン 2 のみを処理します。 3と4の情報。afe4403.o: 関数で heartpulse ': ..

4

2 に答える 2

0

簡単な答え: いいえ、GCC は Keil によって生成された .o または .a ファイルを確実に使用することはできません。

ABI (アーム バイナリ インターフェイス) を使用している可能性がありますが、GCC と Keil はほぼ確実に異なる libc 実装に依存しており、他のツールチェーンが提供しない機能への参照を持つことができます。また、デバッグ情報に互換性がない可能性があります (DWARF に関連するテキストの壁のエラーを参照してください)。最後に、ELF は標準形式ですが、ELF ファイルに入る多くの内容とメタデータは必ずしも標準ではなく、ツールチェーンごとに動作が若干異なります。

残念ながら、すべてのファイルを 1 つのツール チェーンでコンパイルするのがおそらく最善の方法です。

于 2015-09-25T02:24:18.200 に答える