Итак, я работаю над проектом, который предназначен для запуска на удаленном сервере. Я разрабатываю программу на локальном компьютере, компилирую ее, затем загружаю на удаленный сервер. И локальный компьютер, и удаленный сервер работают на CentOS 7.7.
Программа разработана с использованием CLion IDE, настроенной с помощью CMake. Программа зависит от нескольких общих библиотек, которые должны ссылаться на исполняемый файл в соответствии с тем, что я написал в CMake. На моем локальном ПК я могу отлично скомпилировать и запустить программу. Тем не менее, после того, как я scp
весь каталог проекта на удаленном сервере, исполняемый файл не запускается. Он не может найти ни один из файлов ".so", в соответствии с тем, что говорит ldd
.
Это мой CMakeList.txt, где каждый путь является относительным путем, а не абсолютным.
cmake_minimum_required(VERSION 3.15)
project(YS_Test)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_PATH_ src)
file(GLOB SOURCE_FILES_ ${SOURCE_PATH_}/*.*)
set(PROJECT_LIBS_ libTapQuoteAPI.so libTapTradeAPI.so libTapDataCollectAPI.so)
include_directories(api/include)
link_directories(api/lib/linux)
add_executable(YS_Test ${SOURCE_FILES_})
target_link_libraries(YS_Test ${PROJECT_LIBS_})
Пожалуйста, не говорите мне установить LD_LIBRARY_PATH
, чтобы исправить мою проблему. Программа работала на моем локальном компьютере без LD_LIBRARY_PATH
, поэтому я ожидаю, что она будет работать на удаленном сервере без LD_LIBRARY_PATH
. Я хотел бы знать, что на самом деле здесь происходит, вместо того, чтобы работать вокруг. Спасибо!