C++ Linux上raspberry pi 3与boost的交叉编译错误

C++ Linux上raspberry pi 3与boost的交叉编译错误,c++,linux,boost,cmake,raspberry-pi,C++,Linux,Boost,Cmake,Raspberry Pi,我有一个树莓皮3模型b,我想交叉编译我的应用程序,所以我不会离开我的电脑上所有的时间。不管怎样,当我运行cmake。。 -DCMAKE_toolschain_FILE=/home/sean/Code/toolschains/cmake files/raspberry pi/toolschain-raspberry pi.cmake: Make Error at /usr/lib/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package):

我有一个树莓皮3模型b,我想交叉编译我的应用程序,所以我不会离开我的电脑上所有的时间。不管怎样,当我运行
cmake。。
-DCMAKE_toolschain_FILE=/home/sean/Code/toolschains/cmake files/raspberry pi/toolschain-raspberry pi.cmake

Make Error at /usr/lib/cmake/Boost-1.71.0/BoostConfig.cmake:117 (find_package):
  Found package configuration file:

    /usr/lib/cmake/boost_system-1.71.0/boost_system-config.cmake

  but it set boost_system_FOUND to FALSE so package "boost_system" is
  considered to be NOT FOUND.  Reason given by package:

  No suitable build variant has been found.

  The following variants have been tried and rejected:

  * libboost_system.so.1.71.0 (64 bit, need 32)

  * libboost_system.a (64 bit, need 32)

Call Stack (most recent call first):
  /usr/lib/cmake/Boost-1.71.0/BoostConfig.cmake:182 (boost_find_component)
  /usr/share/cmake-3.15/Modules/FindBoost.cmake:443 (find_package)
  CMakeLists.txt:17 (find_package)


-- Configuring incomplete, errors occurred!
我的交叉编译器cmake文件(工具链Raspberry pi.cmake):


我确实从AUR及其/usr/lib32中安装了lib32 boost libs,但它似乎并不关心这些问题。

错误告诉您找到了64位库版本,但没有找到32位版本。如果32位版本位于某些非标准目录(如
/usr/lib32
)中,则不会自动找到它们。你需要告诉CMake在哪里寻找它们;根据CMake文档,在搜索BOOST之前设置
BOOST\u LIBRARYDIR
变量可能会有所帮助。
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_VERSION 1)

set(CMAKE_C_COMPILER $ENV{HOME}/Code/toolchains/crosscompile-raspberrypi/bin/arm-unknown-linux-androideabi-gcc)
set(CMAKE_CXX_COMPILER $ENV{HOME}/Code/toolchains/crosscompile-raspberrypi/bin/arm-unknown-linux-androideabi-g++)

set(CMAKE_FIND_ROOT_PATH $ENV{HOME}/Code/toolchains/crosscompile-raspberrypi/)

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