PFC + Linux + shared libraries

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

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

PFC + Linux + shared libraries

Сообщение shade » 04.02.2007 00:39:34

Проблема такая:

Компилирую простейший пример GTK, а компоновщик ld говорит мол не может найти -lglib, -lgtk и т.п. хотя они лежат в /usr/lib/
например для gtk:
/usr/lib/libgtk-1.2.so.0 (сиволич. ссылка)
/usr/lib/libgtk-1.2.so.0.9.1
есть еще
/usr/lib/libgtkl.a
/usr/lib/libgtkl.la
/usr/lib/libgtkl.so
/usr/lib/libgtkl.so.5
/usr/lib/libgtkl.so.5.0.0

сделал символические ссылки с именами lib<имя>.so в каталоге с проектом для всех "потерянных" библиотек в числе которых libc, libm, libglib, libXi, libX11, libXext... и проект скомпилировался, и работает.

Все бы хорошо, вот не хочется для каждой такой "потеряной" библиотеки создавать ссылки, все должно быть проще, но как?

Таже беда у меня была с sqlite3, которая "теряла" libdl.so...
и с lararus который терял все тот же GTK
что я не так делаю или чего я не сделал? Может нужно как-то настроить ~/.fpc.cfg :?:

FPC 2.1.1 получен кроскомпиляцей из Win в Linux, после чего был перекомпилированн на месте. файл конфигурации .fpc.cfg взял из fpc-2.0.4.win32 с небольшими поправками (в путях поиска юнитов).
Судя по производимому link.res ld должен просматривать все необходимые пути (/lib;/usr/lib;/usr/X11R6/lib)...

PS: я только начинаю программировать под Linux, поэтому если не трудно то объясните по подробнее...
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Alexander » 04.02.2007 01:12:55

Возможно проблема и в неудачном кроссе.

Вот мой глобальный конфиг (/etc/fpc.cfg) без коментов.

Работает. Вроде нет явных путей к /usr/lib/

Ещё мысль: а может проблема с правами - попробуй собрать от рута.

Код: Выделить всё
# For a release compile with optimizes and strip debuginfo
#IFDEF RELEASE
  -OG2p3
  -Xs
  #WRITE Compiling Release Version
#ENDIF

# For a debug version compile with debuginfo and all codegeneration checks on
#IFDEF DEBUG
  -g
  -Crtoi
  #WRITE Compiling Debug Version
#ENDIF

# set binutils prefix
#IFDEF FPC_CROSSCOMPILING
  -XP-
#ENDIF

# Allow goto, inline, C-operators, C-vars
-Sgic

# searchpath for units and other system dependent things
-Fu/usr/local/lib/fpc/2.0.4/units/$fpctarget
-Fu/usr/local/lib/fpc/2.0.4/units/$fpctarget/*
-Fu/usr/local/lib/fpc/2.0.4/units/$fpctarget/rtl
#-Fu~/fpc/packages/base/*/units/;~/fpc/fcll/units/;~/fpc/rtl/units/

# searchpath for libraries
-Fl/usr/lib/gcc-lib/i486-linux/3.3.5
#-Fl/pp/lib
#-Fl/lib;/usr/lib

# Write always a nice FPC logo ;)
-l

# Display Info, Warnings, Notes and Hints
-viwn
# If you don't want so much verbosity use
#-vw

#
# That's all folks
#

-Mobjfpc
-Sh
-gl
-B
-OG2p3
#-CX
#-XX
-Xs
-Fu/root/MyDownloads/msei/msegui/lib/common/*
-Fu/root/MyDownloads/msei/msegui/lib/common/kernel/i386-linux
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 821
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение Sergei I. Gorelkin » 04.02.2007 12:16:18

fpc не виноват. Это политика авторов дистрибутива/пакетов. В Slackware, например, ссылки создаются установочным скриптом соответствующего пакета. С одной стороны, привязка к конкретной версии библиотеки в какой-то степени обеспечивает отсутствие глюков, с другой стороны, при апгрейде библиотеки придется пересобирать все, что с ней связано. Если же привязываться просто к '.so', то можно без проблем поменять, к примеру, '.so.1.0.0' на '.so.1.0.1', но наверняка найдется тот, кто подсунет '.so.2.0.0' и в результате программа перестанет работать... Некий компромисс - привязка только к старшему номеру версии.
Так что придется либо таки создавать линки вручную, либо подправить исходники модулей, чтобы fpc искал там, где надо...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение shade » 04.02.2007 20:58:11

Доступ на чтение к библиотекам есть, под рутом та же беда, так что не в правах дело.

Sergei I. Gorelkin писал(а):Так что придется либо таки создавать линки вручную, либо подправить исходники модулей, чтобы fpc искал там, где надо...

Уж лутше создать линки, не буду же я при каждом обновлении fpc править исходники.

Меня вот что беспокоит: почему динамический загрузчик находит библиотеки, а ld нет :?: Ведь я линки создавал в отдельном каталоге, а прога работает из любого места - значит динамический загрузчик все находит и ему побоку инфиксы и суффиксы :?:

Если у всех работает, а меня нет, то дело каких-то настройках...
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Alexander » 04.02.2007 22:13:15

А что за дистр ?
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 821
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Сообщение shade » 04.02.2007 22:31:39

ASP Vostok Chip Edition
и
Ubuntu 5.3
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Sergei I. Gorelkin » 04.02.2007 22:59:54

А девелоперские пакеты (gtk-devel и прочие) установлены? В списке рассылки периодически рекомендуют их ставить тем, у кого либы не находятся...
Аватара пользователя
Sergei I. Gorelkin
энтузиаст
 
Сообщения: 1406
Зарегистрирован: 24.07.2005 14:40:41
Откуда: Зеленоград

Сообщение mif » 05.02.2007 11:07:11

в асп есть такой файл /etc/ld.so.cache, где и надо прписывать пути для библиотек.
либо экспортите переменную окружения LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH: /some_path...
/etc/ld.so.conf или сюда пропишите пути, потом выполните /sbin/ldconfig
кажись должно помочь. линуха просто ща подрукой нет поэтому подзабыл немного.
mif
новенький
 
Сообщения: 71
Зарегистрирован: 14.12.2005 10:09:27

Сообщение shade » 05.02.2007 12:38:23

Sergei I. Gorelkin писал(а):А девелоперские пакеты (gtk-devel и прочие) установлены? В списке рассылки периодически рекомендуют их ставить тем, у кого либы не находятся...

Возможно проблема в этом, у меня нет таких пакетов. ASP Linux у меня только первый диск, а на Ubuntu их небыло вообще. Если найду поставлю, или дистр сменю..

Лазарь скомпилировался 8)
Аватара пользователя
shade
энтузиаст
 
Сообщения: 879
Зарегистрирован: 21.02.2006 20:15:48
Откуда: http://shamangrad.net/

Сообщение Attid » 05.02.2007 23:03:51

Возможно проблема в этом, у меня нет таких пакетов.

так оно есть в сети есть примеры установки лазаря и там было четко прописано что нужды девелоперские пакеты или создание ссылок вручную на gtk\gtk2

на Ubuntu они есть, только конечно прийдется их скачать :)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2586
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E


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

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

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

Рейтинг@Mail.ru