3

最初に「cmakebuild」を実行してから「make」を実行すると、このエラーが発生します。

/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
(...)"

これは私のmake-fileのフォーマットです:

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")"

問題をグーグルで検索し、問題を解決するためにリンカーフラグ「-m32」を追加した人を見つけた後、最後の行「set(CMAKE_SHARED_LINKER_FLAGS "-m32")」を追加しましたが、問題は解決しませんでした。

問題を解決するにはどうすればよいですか?

ありがとう!

4

1 に答える 1

2

オブジェクトファイルをどこか(システムでコンパイルされていない)からコピーしたためmp4reader.o, codec_instance_mgmt.o and callbacks.o、システムに非互換性が生じていると思います。すべてのオブジェクトを削除して、再度コンパイルしてみてください。

rm *.o

その後、再度コンパイルします。

于 2012-04-06T13:30:58.620 に答える