2012-06-12 49 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,目標平臺是一個8位的sitara皮質處理器。

+1

您需要發佈更多信息。特別是你的命令行和目標平臺。 –

+0

命令行是arm-none-eabi-gcc -O3 -march = armv7 -a -mtune = cortex-a8 -mfpu = neon -ftree -vectorize -mfloat -abi = softfp文件路徑,目標平臺是a-8 sitara皮質處理器 –

+2

'_start'是標準庫的一部分。這是調用'main'的函數。它應該在'crt0.o'中定義,它應該被自動鏈接到你的程序。您的gcc可能會以不同的方式工作,並需要一些額外的操作。也許在文檔中有一些工作示例? –

回答

3

-none-部分意味着您的工具鏈不會爲特定的操作系統構建,因此您必須定義_start入口點。對於爲特定操作系統構建的非裸機工具鏈,_start由標準庫提供,以便在設置所有內容時調用main。

5

編譯器拋出上述錯誤的唯一原因是因爲由OS生成的用於運行代碼的啓動代碼(_start函數)找不到默認或註冊的函數main。所以要麼你可以使用_start函數而不是main函數,但編譯命令應該是gcc -nostartfiles filename.c,但是使用_start會有很多異常,所以最好使用main。