Ошибка 'not find -lgcc_s' при передаче файла набора инструментов для Power-PC в настройку CMAKE - PullRequest
0 голосов
/ 08 октября 2018

Я столкнулся с какой-то странной проблемой в cmake при попытке сделать сборку кросс-компиляции.Для собственной сборки он работает в соответствии с ожиданиями:

Случай 1: Файл цепочки инструментов указан в include () файла CMakelists.txt.

Для сборки Power-PC, когда я передаю файл набора инструментов следующим образом в файле CMakelists.txt:

if(ARM)
include(config/toolchain_la9.cmake)
elseif(POWER-PC)
include(config/toolchain_lppc.cmake)
endif()

все работает нормально, и я могу получить все сгенерированные исполняемые файлы и двоичные файлы с помощью следующих флагов компилятора и компоновщика

/ opt / freescale-2010.09 / bin / powerpc-linux-gnu-gcc -mdouble-float -msoft-float -static-libgcc -lpthread -lm -lrt

Случай 2: файл набора инструментов передается с помощью команды cmake -D.

Снова, когда я прокомментировал фрагмент кода случая 1 и попытался дать тот же файл, что и

cmake PATH_TO_CMAKE_DIRECTORY -DCMAKE_TOOLCHAIN_FILE = / home / one / toolchain_files / toolchain_lppc.cmake

В этот раз я не могу выполнить кросс-компиляцию исходного кода.

со следующей ошибкой:

/ opt / freescale-2010.09 / bin /../ lib /gcc / powerpc-linux-gnu / 4.5.1 /../../../../ powerpc-linux-gnu / bin / ld: не удается найти -lgcc_

с

Случай 3: При использовании Cmake-gui с опцией «указать файл инструментария для кросс-компиляции»

enter image description here

КогдаЯ даю тот же файл в качестве ввода для этой опции.Я снова получаю ту же проблему:

/ opt / freescale-2010.09 / bin /../ lib / gcc / powerpc-linux-gnu / 4.5.1 /../../../../powerpc-linux-gnu/bin/ld: невозможно найти -lgcc_s

  1. Ошибка ясно указывает на то, что libgcc_s отсутствует в указанном пути цепочки инструментов.Но если он не показывает, как он работает в случае 1.
  2. Как я получаю флаг -static-libgcc в случае 1, нужно ли явно указывать его в файле цепочки инструментов во 2-м и 3-м случаях.
  3. Даже в файле набора инструментов, если я использую CMAKE_EXE_LINKER_FLAGS для добавления -static-libgcc во 2-м и 3-м случаях, он все еще показывает те же ошибки.

Я новичок в cmake.хотя это кажется очень полезным для меня, но здесь я застрял.

Содержимое файла набора инструментов выглядит следующим образом:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER /opt/freescale-2010.09/bin/powerpc-linux-gnu-gcc )
set(CMAKE_CXX_COMPILER /opt/freescale-2010.09/bin/powerpc-linux-gnu-g++)
set(CMAKE_STRIP /opt/freescale-2010.09/bin/powerpc-linux-gnu-strip)

set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "/opt/freescale-2010.09/lib/gcc/powerpc-linux-gnu/4.5.1/")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mdouble-float -msoft-float")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mdouble-float -msoft-float")

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)
...