error adding symbols: DSO missing from command line

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

error adding symbols: DSO missing from command line

Сообщение Xenar » 20.08.2018 07:40:09

Всем привет.
Долго искал но нашел реализацию возможности просмотра pdf. https://github.com/dinmil/PDFPreview
При сборке примера компилятор дает ошибку.
Код: Выделить всё
/usr/bin/ld: /usr/lib/x86_64-linux-gnu/libfreetype.a(sfnt.o): неопределённая ссылка на символ «png_set_filler@@PNG12_0»
//lib/x86_64-linux-gnu/libpng12.so.0: error adding symbols: DSO missing from command line
/home/user/LazarusProject/PDFPreview/PDFPreview.lpr(22,1) Error: (9013) Error while linking
/home/user/LazarusProject/PDFPreview/PDFPreview.lpr(22,1) Fatal: (10026) There were 1 errors compiling module, stopping
Fatal: (1018) Compilation aborted


проверил на наличие в библиотеке данного значения:
Код: Выделить всё
readelf -s /lib/x86_64-linux-gnu/libpng12.so.0 | grep png_set_filler
49: 000000000000c6c0 109 FUNC GLOBAL DEFAULT 12 png_set_filler@@PNG12_0

все вроде бы есть.
Гуглил, но аналоги только сишные.
Может есть у кого мысли по поводу онного??

зы: mint 19 x64
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: error adding symbols: DSO missing from command line

Сообщение Vadim » 20.08.2018 09:49:41

Xenar
А Вы libfreetype.a в указанный каталог ручками копировали или эта библиотека там уже была?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: error adding symbols: DSO missing from command line

Сообщение Xenar » 20.08.2018 10:30:19

библиотеки проекта mupf, а библиотека libfreetype.a относится к нему, лежат в externallibs (в корне проекта PDFPreview). Они уже были там. Пути до них прописаны и собственно говоря компилятор их, библиотеки, видит. На гитхабе это видно
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: error adding symbols: DSO missing from command line

Сообщение olegy123 » 20.08.2018 14:15:36

Xenar писал(а):«png_set_filler@@PNG12_0»
хочет долинковать библиотеку png12, libfreetype.a компилировался с ней.. и линкер ищет её, чтобы связать.
там спрятан вызов png_set_filler

Добавлено спустя 11 минут 14 секунд:
Xenar писал(а):Может есть у кого мысли по поводу онного??
скорее линкеру попадается другая либла что указано в libpng.so, какой файл символически слинкован?

Добавлено спустя 10 минут 59 секунд:
есть два пути:
1)указать принудительно линковщику какую либлу хотим увидеть {$L png12.so.x.y}
The same can be obtained by removing the linklib directive in the above unit, and specify -k-lc on the command line:
ppc386 -k-lc foo.pp

https://www.freepascal.org/docs-html/prog/progsu46.html


2)либо запустить компилятор с правильными путями LD_LIBRARY_PATH=/home/user/libpng12:$LD_LIBRARY_PATH lazarus или прописать в окружении export LD_LIBRARY_PATH=/home/user/libpng12:$LD_LIBRARY_PATH
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: error adding symbols: DSO missing from command line

Сообщение Xenar » 20.08.2018 16:30:29

to olegy123

Второй вариант не сработал. Запускаю так
Код: Выделить всё
LD_LIBRARY_PATH=/lib/x86_64-linux-gnu/libpng12  lazarus
\
результат тот же.

По первому. Не могу понять где указывать ликовщику нахождение либы. В примере идет запуск самого компилятора, а если из лазаря?

зы Еще не совсем понял, почему Вы считаете что он не видит правильную либу? В выводе же четко указано где он ее нашел
Код: Выделить всё
/lib/x86_64-linux-gnu/libpng12.so.0: error adding symbols: DSO missing from command line
Аватара пользователя
Xenar
постоялец
 
Сообщения: 158
Зарегистрирован: 08.06.2011 12:54:07

Re: error adding symbols: DSO missing from command line

Сообщение olegy123 » 22.08.2018 12:22:30

LD_LIBRARY_PATH указывает где сперва нужно искать динамические библиотеки. это папака.

LD_LIBRARY_PATH=/home/user/libpng12:$LD_LIBRARY_PATH lazarus - устанавливает переменные окружения и запускает лазарус, так можно отлаживать программы имея чужие библиотеки, вне системы.
/home/user/libpng12 - это папка где хранятся нужные библиотеки so

LD_LIBRARY_PATH=/home/user/libpng12:$LD_LIBRARY_PATH lazarus и просто lazarus будут видеть и использовать разные библиотеки.

аналогично действует export LD_LIBRARY_PATH=/home/user/libpng12:$LD_LIBRARY_PATH
export уже фиксирует LD_LIBRARY_PATH в пространстве пользователя, все программы запускаемые этим пользователем в рамках одной сессии будут просматривать сперва указанные папки

Добавлено спустя 4 минуты 4 секунды:
Xenar писал(а):По первому. Не могу понять где указывать ликовщику нахождение либы. В примере идет запуск самого компилятора, а если из лазаря?
Проект -> Инспектор проекта -> "Параметры" проекта -> Параметры компилятора\Параметры пользователя\Все параметры - находим "-l" и "-k"
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20


Вернуться в Free Pascal Compiler

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

Рейтинг@Mail.ru