проблема с select
Модератор: Модераторы
-
sacredphoenix
- незнакомец
- Сообщения: 3
- Зарегистрирован: 17.03.2009 10:59:16
проблема с select
у меня free pascal 2.2.2 для linux amd64 и очень простая проблема: в каком модуле здесь лежат структуры fdset и процедуры FD_SET FD_ZERO и т.п. а также функция select? заранее спасибо
Я не совсем уловил о чем идет речь, но видимо Вам нужен модуль "baseunix", только там структура приведена к паскалевскому виду TFDSet. К системным функциям, аналогам Си, -спереди добавлена приставка "fp" - fpFD_ZERO, fpFD_Clr, fpFD_Set, fpFD_IsSet. Функция Select - fpSelect. Если нужно найти аналог Си, то ищите его именно с приствкой "fp" в модуле baseunix. В типах и других модулях (unix, linux, oldlinux), без "fp". В Sockets - некоторые с "fp", а некоторые приведены к паскалевскому виду и без приставки, но не все работают, а если работают, то гораздо быстрее системных, короче, нужно пробовать, я уже не помню что и как. Все функции с приставкой "fp" работают.
Добавлено спустя 19 минут 37 секунд:
Еще одно забыл, - модуль "libс". он не во всех версиях фрипаскаля скомпилирован. Приходится заходить в исходники ~/fpc-2.2.x/packages/libc и делать make. Потом вручную перенести полученные модули в каталог с модулями, например: /usr/local/lib/fpc/2.2.3/units/x86_64-linux
Добавлено спустя 19 минут 37 секунд:
Еще одно забыл, - модуль "libс". он не во всех версиях фрипаскаля скомпилирован. Приходится заходить в исходники ~/fpc-2.2.x/packages/libc и делать make. Потом вручную перенести полученные модули в каталог с модулями, например: /usr/local/lib/fpc/2.2.3/units/x86_64-linux
-
sacredphoenix
- незнакомец
- Сообщения: 3
- Зарегистрирован: 17.03.2009 10:59:16
спасибо, именно это мне и нужно было, эти функции есть но с приставкой fp. Все же мне не очень понятно почему не все функции сохранены в исходном виде хотя бы ради совместимости. Попробую скомпилировать вручную, может там они будут
-
sacredphoenix
- незнакомец
- Сообщения: 3
- Зарегистрирован: 17.03.2009 10:59:16
libc норм скомпилировался, в нем есть все что нужно но почему-то когда его переношу в каталог с модулями то компилятор его не видит, а держать его в папке с проектом как-то не очень удобно. Что я делаю не так?
Пропишите путь к каталогу с модулями в файле fpc.cfg. Обычно этот файл находится в: /etc/fpc.cfg
Но может быть ситуация, что он находится в домашнем каталоге, или в каталоге с проектом.
В файле, по умолчанию, есть (должны быть) пути к модулям:
# searchpath for units and other system dependent things
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/rtl
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*
Нижняя строка подразумевает, что поиск будет проходить во всех каталогах, находящихся в каталоге для модулей, но если не срабатывает, то пропишите отдельно полностью путь к модулям, например:
-Fu/usr/local/lib/fpc/2.2.2/units/x86_64-linux/libc
Туда же и скопируйте модули.
Можно еще так:
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/libc
Проверьте, где находятся файлы fpc.cfg. Основной должен быть в каталоге /etc, его перекрывает файл в домашнем каталоге, здесь он может быть с точкой спереди(скрытый), ну и в каталоге проекта, - перекрывает все предыдущие: /etc/fpc.cfg и /home/*/fpc.cfg
Достаточно иметь /etc/fpc.cfg
Но может быть ситуация, что он находится в домашнем каталоге, или в каталоге с проектом.
В файле, по умолчанию, есть (должны быть) пути к модулям:
# searchpath for units and other system dependent things
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/rtl
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/*
Нижняя строка подразумевает, что поиск будет проходить во всех каталогах, находящихся в каталоге для модулей, но если не срабатывает, то пропишите отдельно полностью путь к модулям, например:
-Fu/usr/local/lib/fpc/2.2.2/units/x86_64-linux/libc
Туда же и скопируйте модули.
Можно еще так:
-Fu/usr/local/lib/fpc/$fpcversion/units/$fpctarget/libc
Проверьте, где находятся файлы fpc.cfg. Основной должен быть в каталоге /etc, его перекрывает файл в домашнем каталоге, здесь он может быть с точкой спереди(скрытый), ну и в каталоге проекта, - перекрывает все предыдущие: /etc/fpc.cfg и /home/*/fpc.cfg
Достаточно иметь /etc/fpc.cfg
