Кросс-компиляция плохого компоновщика CMake - PullRequest
0 голосов
/ 22 февраля 2019

Это мой первый проект CMake, включающий кросс-компиляцию.

Это мой файл CMakeLists.txt:

CMAKE_MINIMUM_REQUIRED(VERSION 3.10)

INCLUDE(${CMAKE_CURRENT_SOURCE_DIR}/config.cmake)

PROJECT(proj1)

ENABLE_LANGUAGE(ASM)

SET(ASM_SOURCES "boot/start.s")


ADD_EXECUTABLE(${CMAKE_PROJECT_NAME} ${ASM_SOURCES})

и включает файл config.cmake:

SET(TOOLCHAIN_PREFIX    "arm-rookieboard-eabi")
SET(TOOLCHAIN_PATH      "${CMAKE_CURRENT_SOURCE_DIR}/utils/toolchain/${TOOLCHAIN_PREFIX}")
SET(TOOLCHAIN_BIN_PATH  "${TOOLCHAIN_PATH}/bin")

SET(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
SET(CMAKE_ASM_COMPILER  "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-as")
SET(CMAKE_C_COMPILER    "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-gcc")
SET(CMAKE_CXX_COMPILER  "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-g++")
SET(CMAKE_LINKER        "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-ld" CACHE INTERNAL "" )
SET(CMAKE_OBJCOPY       "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-objcopy")
SET(CMAKE_SIZE          "${TOOLCHAIN_BIN_PATH}/${TOOLCHAIN_PREFIX}-size")

SET(CMAKE_C_LINK_EXECUTABLE ${CMAKE_LINKER})

SET(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} -Map proj1.map -T proj1.ld")

Файл "start.s" успешно компилируется (этот файл содержит код запуска сборки для платформы), но не может связать его.Я исследовал его и обнаружил, что в «link.txt» внутри директории CMakeFiles есть следующая строка:

/home/root/proj1/utils/toolchain/arm-rookieboard-eabi/bin/arm-rookieboard-eabi-as    CMakeFiles/proj1/boot/start.s.o  -o proj1

, почему он снова обращается к AS, а не к LD?я что-то упустил?

Большое спасибо.

...