我一直在嘗試使用--with-fpmath=387
來源編譯gcc 4.x,但我得到這個錯誤:"Invalid --with-fpmath=387"
。我看着在CONFIGS,發現它不支持此選項(即使文檔仍然提到它作爲一個可能的選擇):gcc 4.x不支持x87 FPU數學?
case ${with_fpmath} in
avx)
tm_file="${tm_file} i386/avxmath.h"
;;
sse)
tm_file="${tm_file} i386/ssemath.h"
;;
*)
echo "Invalid --with-fpmath=$with_fpmath" 1>&2
exit 1
基本上,我開始了這件事,因爲我需要提供一個可執行一箇舊的目標平臺(實際上,它是一箇舊的賽揚,但沒有任何SSE2指令,明顯由libstdC++使用,默認默認)。可執行文件在第一條指令(movq XMM0,...)中崩潰,該指令來自libstdC++中複製例程的「非法指令」消息。 有什麼辦法可以解決這個問題嗎?我需要一個相當新的g ++才能移植我現有的代碼庫。
我想知道是否有可能從舊版本提供這些頭/源以支持常規x87指令,以便不引用SSE指令?
更新:請注意我在談論編譯的libstdC++在對象代碼中有SSE2指令,所以問題不在於gcc命令行參數。無論我在編譯代碼時向gcc提供什麼內容,都將與已經具有內置SSE2指令的libstdC++鏈接。
真正的答案是不使用ANY --with-fpmath開關編譯GCC時。我被配置腳本switch語句弄糊塗了,它認爲它只支持sse或avx,而實際上,默認值(在這個開關中沒有提到是「387」)。因此,確保在運行configure時不要使用--with-fpmath。我沒有它重新編譯GCC,它現在工作正常。
謝謝。
正如您找到解決方案,請關閉此問題或添加您的更新作爲答案並接受該答案。 –