C语言 CMake;386:输入文件 (. ) 的 x86-64 体系结构与 i386 输出不兼容



第一次执行"cmake build"然后执行"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
(...)"

这是我的制作文件的格式:

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")",但它并没有为我解决问题。

我应该怎么做才能解决问题?

谢谢!

我认为

,您从某处(未在您的系统上编译)mp4reader.o, codec_instance_mgmt.o and callbacks.o复制了目标文件,这导致您的系统不兼容。您可以尝试删除所有对象并再次编译:

rm *.o

然后再次编译。

最新更新