(CMAKE)在64位系统上编译32位(错误添加符号:文件格式错误)

时间:2018-02-07 15:18:30

标签: linux boost cmake

我有一个使用32位库的cpp项目。当我构建并运行应用程序时,我收到此错误:

  

dlopen:./ lib.so:错误的ELF类:ELFCLASS32

这就是为什么我试图建立这个项目32位。

这是我的cmakeList.txt:

cmake_minimum_required(VERSION 3.9)
project(app)

set(CMAKE_CXX_STANDARD 11)

add_executable(app main.cpp a.c a.h)
set_target_properties(app PROPERTIES COMPILE_FLAGS "-m32" LINK_FLAGS "-m32")

find_package(Boost COMPONENTS system filesystem thread REQUIRED)
IF (Boost_FOUND)
    include_directories(${Boost_INCLUDE_DIR})
    target_link_libraries(app ${Boost_LIBRARIES})
    SET(CMAKE_CXX_FLAGS " -pthread")
endif()

target_link_libraries(app ${CMAKE_DL_LIBS})

我收到此错误:

  

/usr/lib/x86_64-linux-gnu/libboost_system.so:错误添加符号:   文件格式错误

当我删除Boost块并编译时,没问题。当我删除.so文件并在64位上构建时,没问题。但我必须使用这个库并使用libboost。

在这种情况下,正确的cmakeList是什么?

0 个答案:

没有答案