Я создал простое приложение на C ++, используя Netbeans в Ubuntu.
в приложении я использую mysql_connection и curl.
приложение работает нормально в моей локальной системе (Ubuntu)
при попытке запустить приложение на моем сервере Centos я получаю следующее сообщение:
error while loading shared libraries: libmysqlcppconn.so.5: cannot open shared object file: No such file or directory.
попытался проверить, существует ли библиотека libmysqlcppconn.so.5 на сервере или нет, я обнаружил, что есть следующее:
REMOTE (Centos)
**in [/usr/local/lib]**
libmysqlcppconn-static.a
libmysqlcppconn.so@
libmysqlcppconn.so.7@
libmysqlcppconn.so.7.1.1.3*LOCAL (Ubuntu)
**in [/usr/lib]**
libmysqlcppconn-static.a
libmysqlcppconn.so@
libmysqlcppconn.so.5@
libmysqlcppconn.so.5.1.1.0*
почему приложение не запускается? Как я могу это исправить?
Вы должны собрать и упаковать его для своего сервера.
Ваше приложение было связано с другой (несовместимой) версией одной из используемых библиотек.
ИМХО самое простое — это часто собирать его на той коробке, на которой он будет работать.
В целом, нет никакой гарантии, что двоичный файл, созданный в системе Linux, будет работать в другой системе Linux (либо в другом дистрибутиве, либо в другой версии того же дистрибутива). Для некоторых приложений достаточно скопировать файлы библиотеки (lib*.so*
) или связать его статически (gcc -static
), но в целом распространение программ для нескольких систем Linux является более сложным без простого решения.
Одним из решений является перекомпиляция вашей программы для каждой системы, на которой вы хотите ее запустить. Для этого вам нужно установить компилятор и библиотечные зависимости (включая *-devel
пакеты) сначала в эти системы.