2016-09-27 3 views
0

Мне нужно запустить приложение C++, которое я создаю на своем локальном компьютере разработчика Linux (Ubuntu 14.04) в VirtualBox на сервере Linux (Ubuntu 12), проблема, что приложение имеет множество зависимостей и У меня нет sudo на этом сервере, поэтому я не могу сделать что-то вроде sudo apt-get install <libname-dev>.Перемещение приложения на Linux-сервер с локального компьютера Linux

Я использую ldd, чтобы выяснить, какие библиотеки отсутствуют на сервере.

Например:

libopenblas.so.0 => not found 
liblapack.so.3 => not found 

Чем я скопировать этот LIBS из моей локальной машине /usr/lib/ к серверу рядом приложения и не создавать символические ссылки вручную.

Файлы для копирования:

liblapack.so.3.0 
libopenblas.so.0 

Links создать:

liblapack.so.3 
libopenblas.so 
  1. Это плохая идея, чтобы сделать этот вид трюк, это будет всегда работать?
  2. Я задаюсь вопросом о соглашениях об именах Linux .so, в чем смысл .so.3.0, .so.0 и т. Д.?
+0

Те версии, и если вы строите свою программу от версии X и запустить против версии Y

+0

Ваш трюк на самом деле плохая идея, намек на то, что у вас есть четкие две разные операционные системы с вероятными разными библиотеками, которые могут работать или не работать. Итак, вам, вероятно, повезет, но нет, это не обязательно будет работать. Даже если он работает, может возникнуть скрытый сбой, ожидающий выполнения определенного вызова библиотеки. Что касается системы нумерации, я только что упомянул о semver.org, авторитетной и четкой записи. Докер может быть уместным. –

ответ

1

перекомпилировать на другом Ubuntu 12 и связать пропавшие файлы lib. например:

gcc -lsome_dynamic_lib code.c some_static_lib.a 
+0

Каков правильный способ получить эти статические библиотеки для Server Linux, если я не могу 'sudo apt-get install'? – mrgloom

Смежные вопросы