Ручная интеграция FreeType

Я пытаюсь запустить программу, которая вручную использует FreeType. Я не должен компилировать FreeType в библиотеку, а использовать исходный код напрямую. На данный момент я могу скомпилировать свой код без ошибок. Однако, когда я запускаю свою программу в Ubuntu, она дает ошибку сегментации. Я считаю, что проблема связана со структурой модуля. Я использую FreeType для преобразования ttf в растровое изображение, поэтому я включил модули tt, sfnt и psnames. Однако, я думаю, что-то не так с их инициализацией.


person elasolova    schedule 05.07.2010    source источник


Ответы (1)


Почему вы избегаете предоставляемых Ubuntu пакетов libfreetype6 и libfreetype6-dev?

Я мог бы понять, что вашей целью может быть внесение изменений в libfreetype, и, таким образом, у вас есть простой способ внести необходимые изменения, не затрагивая остальную часть системы, но вы всегда будете хотеть использовать FreeType в качестве библиотеки. (Конечно, вы можете статически связать его, но по моему опыту, статическое связывание обычно добавляет проблем, а не устраняет их.)

Таким образом, вы можете установить свою собственную локальную копию FreeType в /usr/local/lib/ или ~/local/lib/ (используйте ./configure --prefix=/usr/local или --prefix=~/local/).

Затем при компиляции вашей программы вы должны использовать gcc -I ~/local/include -L ~/local/lib ...

person sarnold    schedule 05.07.2010
comment
Спасибо за ваш ответ. Дело в том, что я буду использовать свой код на машине-прототипе, на которой есть только gcc. Возможно, мы сможем скомпилировать библиотеку на этой машине, но мой босс не хочет использовать библиотеку. Он говорит, что код должен быть скомпилирован без ссылки на библиотеку. Я уже сделал преобразование для исходного кода, и теперь код компилируется. Однако что-то не так с выполнением модулей. - person elasolova; 05.07.2010
comment
@elasolova, по крайней мере, в моей системе Ubuntu libfreetype также связан с libz.so. Вы также сделали подходящую замену для процедур сжатия? или удалить их? (Или он по-прежнему будет ссылаться на системный /lib/libz.so.1?) Если вы зашли так далеко, то, возможно, есть что-то более конкретное, что нужно исправить: попробуйте вставить вывод из ldd в полученный двоичный файл и сообщение об ошибке, которое вы получаете при попытке запустить его. - person sarnold; 05.07.2010