2013-02-01 27 views

回答

1

我也有一個令人失望的經驗尋找答案。

具體來說:以下對我有幫助(最新的Ubuntu 2013年5月)。試試-fno-reorder-functions-fno-inline。例如,在cmake的,這工作:

if(CMAKE_COMPILER_IS_GNUCXX) 
    add_definitions(${CMAKE_CXX_FLAGS} "-Ofast") 
    add_definitions(${CMAKE_CXX_FLAGS} "-fno-reorder-functions") 
    add_definitions(${CMAKE_CXX_FLAGS} "-fno-inline") 
endif() 

一般:嘗試尋找在編譯器優化的文檔。找到適用的優化級別,然後爲下一級添加所有列出的選項。嘗試添加和刪除,例如,平分。再次,在cmake類似的:

add_definitions(${CMAKE_CXX_FLAGS} "-O1") 
    add_definitions(${CMAKE_CXX_FLAGS} "-fthread-jumps") 
    add_definitions(${CMAKE_CXX_FLAGS} "-falign-functions -falign-jumps") 
    add_definitions(${CMAKE_CXX_FLAGS} "-falign-loops -falign-labels") 
    # add_definitions(${CMAKE_CXX_FLAGS} "-fcaller-saves") 
    # add_definitions(${CMAKE_CXX_FLAGS} "-fcrossjumping") 
    # add_definitions(${CMAKE_CXX_FLAGS} "-fcse-follow-jumps -fcse-skip-blocks") 
    # add_definitions(${CMAKE_CXX_FLAGS} "-fdelete-null-pointer-checks") 

很可能是一個或兩個優化選項導致所有問題。