Кросс-компиляция CMake не устанавливает правильный суффикс арки - PullRequest
0 голосов
/ 29 мая 2020

У меня есть хост x86_64, который выполняет кросс-компиляцию в arm- linux -gnueabihf, а CMake не может найти zlib.

Вот моя цепочка инструментов:

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)

SET(CMAKE_C_COMPILER $ENV{HOME}/dev/sandbox/rpi/raspbian/toolchain/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER $ENV{HOME}/dev/sandbox/rpi/raspbian/toolchain/bin/arm-linux-gnueabihf-g++)
SET(CMAKE_FIND_ROOT_PATH $ENV{HOME}/dev/sandbox/rpi/raspbian/rootfs)

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)

И вот вывод cmake -DCMAKE_TOOLCHAIN_FILE=$HOME/dev/sandbox/rpi/raspbian/test2.cmake .. --debug-find:

CMake Debug Log at /usr/share/cmake-3.17/Modules/FindZLIB.cmake:81 (find_library):                                                              
  find_library called with the following settings:                                                                                              

    VAR: ZLIB_LIBRARY_RELEASE                                                                                                                   
    NAMES: "z"                                                                                                                                  
           "zlib"                                                                                                                               
           "zdll"                                                                                                                               
           "zlib1"                                                                                                                              
           "zlibstatic"                                                                                                                         
    Documentation: Path to a library.                                                                                                           
    Framework                                                                                                                                   
      Only Search Frameworks: 0                                                                                                                 
      Search Frameworks Last: 0                                                                                                                 
      Search Frameworks First: 0                                                                                                                
    AppBundle                                                                                                                                   
      Only Search AppBundle: 0                                                                                                                  
      Search AppBundle Last: 0                                                                                                                  
      Search AppBundle First: 0                                                                                                                 
    CMAKE_FIND_USE_CMAKE_PATH: 1                                                                                                                
    CMAKE_FIND_USE_CMAKE_ENVIRONMENT_PATH: 1                                                                                                    
    CMAKE_FIND_USE_SYSTEM_ENVIRONMENT_PATH: 1                                                                                                   
    CMAKE_FIND_USE_CMAKE_SYSTEM_PATH: 1                                                                                                         

  find_library considered the following locations:

...
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/lib/(lib)z(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/lib/(lib)zlib(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/lib/(lib)zdll(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/lib/(lib)zlib1(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/lib/(lib)zlibstatic(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/(lib)z(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/(lib)zlib(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/(lib)zdll(\.so|\.a)
/home/jrdn/dev/sandbox/rpi/raspbian/rootfs/lib/(lib)zlib1(\.so|\.a)
...

The item was not found.

...

CMake Error at /usr/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:164 (message):
  Could NOT find ZLIB (missing: ZLIB_LIBRARY) (found version "1.2.11")
...

Журнал усечен для ясности, но он не может найти ни выпускную, ни отладочную версии этого пакета, а также заголовки. Интересно, что он думает, что что-то находит и это правильная версия пакета.

Проблема в том, что пока он ищет мои целевые rootfs, фактические библиотеки существуют в / lib / arm- linux -gnueabihf / а не / lib. Когда я запускаю cmake без привязки инструментов к цели, все работает настолько явно, что что-то не установлено правильно.

Есть какие-нибудь советы?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...