2012-06-12 152 views
10

gccのコンパイル時に私のCコードがエラーCannot find entry symbol _start defaulting to 00000を与えています。誰でも私にそれを修正する理由と方法を教えてもらえますか?エントリシンボルが見つかりません_start

コマンドラインはarm-none-eabi-gcc -O3 -march=armv7-a -mtune=cortex-a8 -mfpu=neon -ftree-vectorize -mfloat-abi=softfp file pathで、ターゲットプラットフォームはa-8 sitara cortexプロセッサです。

+1

詳細を投稿する必要があります。特にあなたのコマンドラインとターゲットプラットフォーム。 –

+0

コマンドラインはarm-none-eabi-gcc -O3 -march = armv7-a -mtune = cortex-a8 -mfpu = neon -ftree-vectorize -mfloat-abi =ソフトフォンファイルパスであり、ターゲットプラットフォームは-8です。シタラ皮質プロセッサ –

+2

'_start'は標準ライブラリの一部です。 'main'を呼び出す関数です。 'crt0.o'に定義されていなければなりません。これはあなたのプログラムに自動的にリンクされるべきです。 gccの動作が異なる可能性があり、いくつかの追加アクションが必要です。ドキュメンテーションにはいくつかの実例がありますか? –

答えて

3

-none-部分は、特定のオペレーティングシステム用にツールチェーンが構築されないことを意味するため、_startエントリポイントを定義する必要があります。特定のオペレーティングシステム用に構築されたベアメタル以外のツールチェーンの場合、_startは標準ライブラリによって提供され、すべてがセットアップされたときにmainと呼ばれます。

5

コンパイラが上記のエラーを投げた唯一の理由は、コードを実行するためにOSによって生成されたスタートコード(_start関数)がデフォルトまたは登録された関数mainを見つけることができないためです。したがって、main関数の代わりに_start関数を使用することもできますが、コンパイルコマンドはgcc -nostartfiles filename.cでなければなりませんが、_startを使用すると例外がたくさんあります。

関連する問題