libcairo undefined symbol :FT _Get _Var _Design _Ошибка координат при вызове R из скомпилированного приложения MATLAB на Centos7

gddrescue кажется копией, которая пытается повторно реализовать функции из sdd, но поскольку sddбесполезна для оптических носителей, то же самое относится и к gddrescue.

Причина в том, что при доступе к оптическим носителям на уровне драйвера UNIX вы полагаетесь на функции восстановления после ошибок драйвера из ОС. Этот драйвер написан не для оптических носителей, а для жестких дисков, и его идентификатор обычно намного хуже, чем то, что вы можете получить от программного обеспечения, разработанного для оптических носителей.

Я рекомендую использовать readcd -noerrorиз cdrtools, он напрямую обращается к диску, используя собственные команды SCSI, отправляемые через универсальный интерфейс SCSI. Последние версии находятся в исходном дереве schilytools. Readcd даже включает в себя декодер Рида-Соломона, который может помочь в случае, если восстановление после ошибок в прошивке CD-привода не является оптимальным. Декодер Рида-Соломона активируется опцией -edc-corr.

Обратите внимание, что сила восстановления после ошибки контролируется параметром retries=.

2
08.01.2021, 22:59
1 ответ

Проведя небольшое исследование, я обнаружил, что проблема с libcairo на самом деле была проблемой с freetype. Этот вопрос-https://stackoverflow.com/questions/60782074/r-issue-unable-to-load-shared-object-cairo-so-on-linux-centos-7-предполагает, что проблема может заключаться в нескольких библиотеках freetype, однако выполнение rpm freetype:

rpm -q freetype
freetype-2.8-14.el7_9.1.x86_64
freetype-2.8-14.el7_9.1.i686

Обнаружено отсутствие дубликатов библиотек свободного типа.

Оказывается, LD _LIBRARY _PATH ищется перед библиотеками os:https://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html

Конечно же, бегущая находка:

sudo find / -type f -iname 'libfreetype.so.*'
/usr/lib/libfreetype.so.6.14.0
/usr/lib64/libfreetype.so.6.14.0
/usr/local/bin/glnxa64/libfreetype.so.6.11.1
/usr/local/MATLAB/MATLAB_Runtimev92/v92/bin/glnxa64/libfreetype.so.6.11.1
/usr/local/MATLAB/R2017a/bin/glnxa64/libfreetype.so.6.11.1

Обнаружено, чего не будет в rpm. -У MATLAB есть собственные библиотеки свободного типа! Какой LD _LIBRARY _PATH переопределял библиотеку os freetype (, поэтому R работал, когда sudoed ).

Наиболее последовательное исправление состоит из двух частей:

  1. Убедитесь, что LD _LIBRARY _PATH задан только как часть исходного вызова автономной программы MATLAB,это можно сделать с помощью файла run _MyProgram.sh, созданного при компиляции.
  2. В вашем коде MATLAB убедитесь, что все "системные" вызовы очищают LD _LIBRARY _PATH перед запуском. то есть:
function [status,cmdout]=systemAlt(cmd)
    if isunix()
        [status,cmdout]=system(['export LD_LIBRARY_PATH="";',cmd]);
    else
        [status,cmdout]=system(cmd);
    end
end

Как ни странно, мне также нужно было загрузить новые шрифты, чтобы все заработало правильно:

yum install xorg-x11-font*

Итак, -если кто-то застрял, как я, я надеюсь, что это поможет вам.

1
18.03.2021, 22:37

Теги

Похожие вопросы