URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 1891
[ Назад ]

Исходное сообщение
"Переносимость программ"

Отправлено Vlad2003 , 21-Июл-03 01:20 
Доброго все времени суток!
Народ, кто что может сказать по поводу переносимотси программ, написанных на С (Перл), и наличия (отсутствия, совместимости и т.д.) библиотек. Системы: *BSD и Linux. Заранее благодарен.

Содержание

Сообщения в этом обсуждении
"Переносимость программ"
Отправлено asso , 21-Июл-03 12:24 
Что касается Си, то все просто: прежде чем использовать какую-нибудь фнукцию, читай в man'е раздел CONFORMING TO.  Если функция соответствует стандартам, то смело ее используй. Между Linux и FreeBSD совместимость неплохая. Обычно мои программы под Linux с минимальными телодвижениями начинали работать и в OpenBSD.

"Переносимость программ"
Отправлено Vlad2003 , 21-Июл-03 14:37 
А по подробнее можно: кто с какими проблемами столкнулся, может какие функции по разному себя ведут в разных ОС, может какие-то библиотеки нужные присутствуют/остутствуют в этих ОС.

"Переносимость программ"
Отправлено asso , 21-Июл-03 18:31 
В Linux и BSD немного по-разному ведут себя сигналы в многопоточных программах.  В одном случае сигнал приходит одному потоку, в другом сразу всем.  Многопоточные программы по-разному собираются, в BSD используется специальный ключ для компилятора, а в Linux просто надо линковаться с pthread.  Менеджеры памяти устроены по-разному, из-за чего баги при работе с памятью могут не проявляться в одной ОС, но вылезти в другой (valgrind тебе поможет).  iconv в Linux входит в libc, а в FreeBSD это отдельная библиотека.  dlopen и ко в Linux находятся в библиотеке dl, а в FreeBSD они внутри libc.  В Linux libpcap библиотека как библиотека, а в OpenBSD она блокирует все потоки :-E  В Linux всегда стоит GNU make, а в BSD он как правило не стоит, надо либо требовать от пользователей везде использовать GNU make, либо не пользоваться специфичными для GNU make фичами.

Короче, всего не упомнить.  Просто надо внимательно читать маны и пробовать свою программу на всех системах.  Добится переносимости между UNIX'ами не так уж сложно, не то что между UNIX и Windows.