【问题标题】:cmake crosscompile link boostcmake交叉编译链接提升
【发布时间】:2021-09-07 17:26:12
【问题描述】:

我有一个 (YOCTO) SKD,包括用于 ARM Target 32​​ 位的增强功能。在 Ubuntu 18.04 中托管。

如何链接 Boost?

【问题讨论】:

  • project() 调用之后设置CMAKE_SYSTEM_NAME错误。相反,准备单独的工具链文件来设置与工具链相关的 CMake 变量(CMAKE_SYSTEM_NAMECMAKE_SYSTEM_PROCESSORCMAKE_SYSROOT 等)并通过将选项 -DCMAKE_TOOLCHAIN_FILE=/path/to/file 传递给 cmake 可执行文件来使用此文件。

标签: linux boost cmake cross-compiling


【解决方案1】:

正如@Tsyvarev指出的那样:

首先准备工具链,然后使用链接的 Boost 制作项目。

cmake_minimum_required(VERSION 3.19)

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR armv7-a)

# sysroot
set(CMAKE_SYSROOT /opt/karo-base/1.0/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi)
set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})

# compiler
set(TOOLCHAIN_PREFIX /opt/karo-base/1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++)

set(COMPILER_FLAGS " -mthumb -mfpu=neon-vfpv4 -mfloat-abi=hard -mcpu=cortex-a7 -fstack-protector-strong -mbe32")
set(CMAKE_C_FLAGS "${COMPILER_FLAGS}" CACHE STRING "" FORCE)
set(CMAKE_CXX_FLAGS "${COMPILER_FLAGS}" CACHE STRING "" FORCE)

set(CMAKE_CXX_STANDARD 17)

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)

project(helloBoost )

# see https://cmake.org/cmake/help/v3.5/module/FindBoost.html
find_package(Boost REQUIRED COMPONENTS ALL)

add_executable(helloBoost main.cpp)
target_link_libraries(helloBoost Boost::boost Boost::log)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-11
    相关资源
    最近更新 更多