libc.so.6: ошибка при добавлении символов: DSO отсутствует в командной строке - PullRequest
0 голосов
/ 10 июля 2019

Я кросс-компилирую приложение, в котором хост-системой является Ubuntu 16.04 (используется gcc5 и g++5), а целью является Renesas R-Car H3ULCB.

Я использую среду кросс-компиляции, которая была создана с помощью yocto build для H3ULCB. Я создал файл CMake для сборки проекта. Во время кросс-компиляции произошла ошибка при связывании библиотек общих объектов для libc.

Ниже приведена ошибка:

/opt/poky/2.1.3/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ld:
/home/microsar/SIP/CBD1800182-D06/delivery-CBD1800182-D06/builds/cross/amsr-vector-fs-libosabstraction/lib/libosabstraction.a(scheduler.cc.o):
undefined reference to symbol 'sched_get_priority_min@@GLIBC_2.17'
01:35:13 [  ERROR]
/opt/poky/2.1.3/sysroots/aarch64-poky-linux/lib/libc.so.6: error adding symbols: DSO missing from command line

Ниже приведено содержимое .cmake файла:

# Poky installation specific
set(POKY_INSTALL_DIR "/opt/poky/2.1.3")
set(POKY_TARGET_BIN_DIR
    "${POKY_INSTALL_DIR}/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux")
#set(POKY_POOL_DIR "${PIKEOS_INSTALL_DIR}/aarch64-poky-linux/arm/v8hf")
#set(CUSTOM_POOL_DIR "$ENV{HOME}/build/pikeos_pool")

# Use the PikeOS pool as sysroot
#set(CMAKE_SYSROOT "${CUSTOM_POOL_DIR}")
# Set the install prefix to a reasonable default value.
#set(CMAKE_INSTALL_PREFIX "${CUSTOM_POOL_DIR}/usr" CACHE STRING "Install path prefix, prepended onto install directories.")

# Set the name of the target systems
set(CMAKE_SYSTEM_NAME Linux)
# Set the version of the target system
set(CMAKE_SYSTEM_VERSION 2.1.3)
# Set processor (or hardware) of the target system
set(CMAKE_SYSTEM_PROCESSOR arm)


# sysroot location
set(MYSYSROOT /opt/poky/2.1.3/sysroots/aarch64-poky-linux)
# Set C compiler
set(CMAKE_C_COMPILER ${POKY_TARGET_BIN_DIR}/aarch64-poky-linux-gcc)
# Set C++ compiler
set(CMAKE_CXX_COMPILER ${POKY_TARGET_BIN_DIR}/aarch64-poky-linux-g++)
# compiler
include(CMakeForceCompiler) 
cmake_force_c_compiler(/opt/poky/2.1.3/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-gcc
   GNU)
cmake_force_cxx_compiler(/opt/poky/2.1.3/sysroots/x86_64-pokysdk-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-g++
   GNU)
# compiler/linker flags
add_definitions("--sysroot=${MYSYSROOT}")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl
   --sysroot=${MYSYSROOT}" CACHE INTERNAL "" FORCE)
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}
   --sysroot=${MYSYSROOT}" CACHE INTERNAL "" FORCE)
# cmake built-in settings to use find_xxx() functions
set(CMAKE_FIND_ROOT_PATH ${MYSYSROOT})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH)
# Set linker calling command rule
# !!! Order of parameters is important here !!!
# Otherwise you will get plenty of unresolved STL symbols during linking!
set(CMAKE_CXX_LINK_EXECUTABLE   "<CMAKE_LINKER> -o <TARGET>
   <OBJECTS> <LINK_LIBRARIES> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS>"  
   CACHE STRING "Linker calling command rule for C++ executables." FORCE
   )

set(CMAKE_C_LINK_EXECUTABLE
   "<CMAKE_LINKER> -o <TARGET> <OBJECTS> <LINK_LIBRARIES> <CMAKE_C_LINK_FLAGS <LINK_FLAGS>"
    CACHE STRING "Linker calling command rule for C executables." FORCE )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...