2012-04-06 158 views
3

我得到這個錯誤首先做「cmake的構建」時再「做」不兼容:CMake; 386:輸入文件(..)的x86-64架構與i386的輸出

/usr/bin/ld: i386:x86-64 architecture of input file `CMakeFiles/eperftool.dir/mp4reader.o' is incompatible with i386 output 
/usr/bin/ld: i386:x86-64 architecture of input file `CMakeFiles/eperftool.dir/codec_instance_mgmt.o' is incompatible with i386 output 
/usr/bin/ld: i386:x86-64 architecture of input file `CMakeFiles/eperftool.dir/callbacks.o' is incompatible with i386 output 
(...)" 

這是對我的格式讓文件:

file (GLOB eperftool_sources ./*) 

set(EPERFTOOL_BIN ${PROJECT_SOURCE_DIR}/bin/${CMAKE_BUILD_TYPE}/eperftool CACHE STRING "eperftool dir") 
add_executable(eperftool ${eperftool_sources}) 


find_package (Threads) 
if (Threads_FOUND) 
    include_directories(${Threads_INCLUDE_DIRS}) 
endif (Threads_FOUND) 

target_link_libraries(eperftool openfec m) 

target_link_libraries(eperftool ${CMAKE_THREAD_LIBS_INIT}) 

set(CMAKE_SHARED_LINKER_FLAGS "-m32")" 

我加了最後一行「設置(CMAKE_SHARED_LINKER_FLAGS‘-m32’)」谷歌搜索的問題,並發現,爲了解決它加入了鏈接標誌「-m32」後,一個人,但它並沒有解決我的問題。

我該怎麼做才能解決問題?

謝謝!

回答

2

我認爲,您從某處(未在您的系統上編譯過)複製了目標文件mp4reader.o, codec_instance_mgmt.o and callbacks.o,這導致系統不兼容。 你可以嘗試刪除所有對象,並再次進行編譯:

rm *.o 

,然後重新編譯。

+0

我運行這個命令'cmake build clean .. && cmake build .. && make'。 我有另一個Ubuntu安裝,它工作正常編譯。 Ubuntu停止工作,所以我再次使用Window Installer安裝它,並從舊系統中複製文件。 – 2012-04-06 13:35:39

+0

你嘗試刪除舊的目標文件嗎? – 2012-04-06 13:37:02

+0

感謝您的幫助! 我刪除了構建目錄並重新構建了它。現在它正在工作。 週末愉快! /安德斯 – 2012-04-06 13:43:01