Это невозможно -в разделяемых библиотеках отсутствует часть информации, содержащейся в статической библиотеке. Похоже, у вас проблема с XY. Вы спрашиваете, как статически связать общую библиотеку, но на самом деле вам нужен лучший способ распространения вашего приложения. Я бы рекомендовал использовать что-то вроде Горностай . Он объединяет общие библиотеки в один исполняемый файл, создавая впечатление одной статически связанной библиотеки
.
Также есть плоский пакет . Хотя это, вероятно, не решит проблему, с которой вы столкнулись, оно предлагает очень переносимый способ доставки вашего приложения и зависимостей (, а не только общих библиотек )
.
Мне удалось установить EBImage на мою машину с ОС Linux Centos 7. sudo cp /usr/local/lib/libpng16.so.16 /usr/lib
проблема решена
Похоже, вашему пакету R нужнаlibpng16.so.16
(1.6. ветка ), тогда как по умолчанию в CentOS 7 используется та, которую вы установили (1.5 ветка, доступная через libpng
пакет ).
Если вы не возражаете против использования коммерческого репозитория, libpng 1.6 доступен в репозитории GetPageSpeed :
sudo yum -y install https://extras.getpagespeed.com/release-latest.rpm
sudo yum install libpng16
В качестве альтернативы, хотя это крайне не рекомендуется из-за размещения не -упакованных файлов в корневую файловую систему, вы можете использовать предварительно скомпилированные двоичные файлы libpng16, расположенные здесь:извлечь архив, создать символическую ссылку из файла предварительно скомпилированной библиотеки на libpng16.so.16
, укажите настраиваемый путь включения из архива к установке пакета R
и т. д.
По какой-то причине эта проблема возникает при использовании Anaconda на RHEL/Centos 7. Вероятно, потому что Anaconda устанавливает более новую версию libpng
.
Мне удалось установить другой пакет с такой же png
зависимостью от пакета, временно удалив anaconda из PATH
, распознаваемого R. Как только я это сделал, пакет png
и его зависимый пакет были установлены без вопросы.