libiconv.so во FreeBSD

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

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

libiconv.so во FreeBSD

Сообщение Дож » 08.01.2014 10:30:11

Добрый день!

Есть программа:
Код: Выделить всё
[doj@korica ~]$ cat test.pas4
uses
  cwstring;
begin
end.


Программа не компилируется, потому что не видит /usr/local/lib/libiconv.so:
Код: Выделить всё
[doj@korica ~]$ fpc test.pas4
/usr/bin/ld: cannot find -liconv
test.pas4(4,1) Error: Error while linking
test.pas4(4,1) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
Error: /usr/local/bin/ppc386 returned an error exitcode


Код: Выделить всё
[doj@korica ~]$ ldconfig -r | grep iconv
        20:-lkiconv.4 => /lib/libkiconv.so.4
        169:-liconv.3 => /usr/local/lib/libiconv.so.3
        177:-lbiconv.2 => /usr/local/lib/libbiconv.so.2
        443:-lkiconv.3 => /usr/local/lib/compat/libkiconv.so.3


Конкретно -liconv нельзя сконфигурировать через ldconfig, потому что ldconfig во FreeBSD видит только либы в форме lib*.so.[0-9], несмотря на то, что libiconv.so на самом деле есть.

Что делать в такой ситуации? Конфигурировать систему, насильно упихивая libiconv.so, не хочется (не всегда есть рут, программа хуже переносится), насильно в мейкфайле заставлять fpc брать -liconv.3 тоже (вдруг будет не 3, а другое число?), хочется как-то универсально намекнуть fpc что-нибудь в духе «ищи -liconv.N с максимальным числом, если -liconv нет».

Есть идеи что делать в такой ситуации?
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: libiconv.so во FreeBSD

Сообщение Padre_Mortius » 08.01.2014 12:43:12

Дож, обычно в таких случаях создается симлинк в папке /usr/lib/
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: libiconv.so во FreeBSD

Сообщение Дож » 08.01.2014 12:44:49

Padre_Mortius писал(а):Дож, обычно в таких случаях создается симлинк в папке /usr/lib/

Допустим, что в данном случае я админ и могу это сделать.

Но если код утащить на другую машину с FreeBSD, то там не будет этой настройки и код не скомпилится.

Добавлено спустя 1 минуту 50 секунд:
Хотя нет, симлинк тут вообще ничем не поможет.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47

Re: libiconv.so во FreeBSD

Сообщение Padre_Mortius » 08.01.2014 13:00:16

Но если код утащить на другую машину с FreeBSD, то там не будет этой настройки и код не скомпилится.

Он там должен работать или компилироваться? В линуксе при таких проблемах помогает установка devel-пакетов.
Padre_Mortius
энтузиаст
 
Сообщения: 1265
Зарегистрирован: 29.05.2007 17:38:07
Откуда: Спб

Re: libiconv.so во FreeBSD

Сообщение Дож » 08.01.2014 13:09:23

Padre_Mortius писал(а):
Но если код утащить на другую машину с FreeBSD, то там не будет этой настройки и код не скомпилится.

Он там должен работать или компилироваться? В линуксе при таких проблемах помогает установка devel-пакетов.


Компилироваться. Не очень себе представляю что такое работающий, но не компилирующийся код :)

В линуксе с этим вообще проблем не будет, потому что там нет ограничений на названия либ.

Добавлено спустя 30 минут 41 секунду:
Нашёл в рассылке fpc-devel тред с этой же проблемой, там единственной рекомендацией было прописать -Fl/usr/local/lib, так и сделаю для себя.

Конкретнее, прописал в makefile'е такое:
Код: Выделить всё
ifeq ($(OS),Windows_NT)
  <...>
else
  OPERATING_SYSTEM = $(shell uname -s)
  <...>
endif

<...>
ifeq ($(OPERATING_SYSTEM),FreeBSD)
  FPC_OPTIONS := $(FPC_OPTIONS) -Fl/usr/local/lib
endif


Всем спасибо за внимание.
Аватара пользователя
Дож
энтузиаст
 
Сообщения: 899
Зарегистрирован: 12.10.2008 16:14:47


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

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

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

Рейтинг@Mail.ru