Как создать статическую сборку для приложения, которое само использует общую библиотеку в C ++ - PullRequest
0 голосов
/ 08 октября 2019

У меня есть небольшое приложение на C ++, которое использует несколько общих библиотек, таких как libtins, libjsoncpp. Он хорошо работает в моей системе Ubuntu 16, однако, когда я пытаюсь запустить его на другой Ubuntu 16, возникает ошибка: ошибка при загрузке общих библиотек libtins.so.4.3 . Как я могу заставить этот исполняемый файл работать?

Я пробовал несколько способов, но он не работает, вот что я попробовал. Я использовал cmake для сборки.


cmake_minimum_required(VERSION 3.14)
project(zmq_client)

set(CMAKE_CXX_STANDARD 14)
SET(CMAKE_CXX_FLAGS -pthread)

set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc")
set(dir ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${dir}/bin")

add_executable(zmq_client basic.cpp)
include_directories("/home/lee/Documents/cpp/zguide/examples/C++")

target_link_libraries(zmq_client "-L/usr/local/lib" libtins.so)

Я пытался скопировать файлы libtins.so в другую систему в том же каталоге с исполняемым файлом, но это не сработало.

Может кто-нибудь помочь, пожалуйста?

Os - Ubuntu 16 Cmake - 3.5

...