2014-08-27 155 views
2

我正在使用運行Linux的MINI2440板(S3C2440 CPU)。鑄造int浮動導致非法指令

我有這樣的工作:

double a=168.168; 
printf("\nsqrt(%f)=%f\n", a, sqrt(a)); 

但我這導致 「非法指令」:

float a = 0.0; 
int b = 1; 
a = (float)b; 

我不能投一個int爲float ..

我嘗試添加/刪除-msoft_float以及-D__GCC_FLOAT_NOT_NEEDED選項,但它不會改變任何內容。

有什麼想法?

+1

嘗試'a = b;'並依靠編譯器做正確的事情(*許多*/*一些*/* C中的一些*強制轉換都是錯誤的)。 – pmg 2014-08-27 15:34:38

+1

可能是代碼生成錯誤。你可以通過編譯代碼片段來發布你的程序集,以防萬一嗎? – 2014-08-27 15:35:23

+0

這是編譯錯誤還是運行錯誤? – pmg 2014-08-27 15:37:52

回答

1

得到它的工作...

我錯過指定-march = ARMV4T和-mtune = ARM920T選項。

現在完美的工作,謝謝。