|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : Valentin Nechayev 2:5020/400 29 Aug 2000 13:16:03 To : Vsevolod Melnikov Subject : Re: C++ и разные UNIX-ы --------------------------------------------------------------------------------
Hello Vsevolod Melnikov!
VM> Первое. В исходниках употреблялась функция strsep. Под Linux и FreeBSD оно
VM> скомпилялось, под Solaris - нет. Пришлось менять руками на strtok. При этом
VM> gcc на всех трех платформах примерно одной версии - 2.9.что-то_еще. Вопрос:
VM> почему на солярке про эту функцию компилятор не знал, а на фре и линуксе -
VM> знал? Откуда вообще сакральное знание об этой функции берется и куда
VM> девается?
Для того, чтобы функцию использовать, нужно
1) чтобы она была объявлена в каком-то хедере, прямо или косвенно указанном
в исходном файле
2) была в библиотеке
strsep - не входит как минимум в старые стандарты Си и является расширением,
введенным, вероятно, в BSD, и принятым в linux libc.
VM> Второе. Следующий очевидный вопрос - нельзя ли в подобных случаях не руками
VM> исправлять исходники, а делать это автоматически или хотя бы
VM> полуавтоматически? Может ли помочь в этом какой-нибудь софт типа Autoconf?
VM> Или что-то еще?
Может. Hо надо знать, какие особенности есть у каких платформ - что есть,
чего нету, что как реализовано. autoconf поможет этому только в простейших
случаях. Если нужно более конкретное знание - возьми configure.in из поставки
хотя бы следующих пакетов: tin, ucd-snmp, screen, ssh1, ssh2 (оба финские) -
там очень много разных существенных проверок, так что глаза разбегутся.
Если не хочешь этим путем, тогда делай итеративно - как пришлют багрепорт
"у нас не собирается", требуй манов и пиши затычки.
VM> Третье. При компиляции под разными платформами мне пришлось немного править
VM> параметры опций -l в строке запуска gcc. Линукс, напрмимер, хотел, чтобы был
VM> -lnsl, а солярка прекрасно обходилась без этого, зато требовала еще что-то
VM> свое для сокетов. Вопрос тот же. А здесь компиляцию можно каким-либо софтом
VM> автоматизировать? Чтобы, скажем, имея отлаженные исходникик под Linux не
VM> ковыряться с переносом на каждой новой платформе. Хотя и не особо сложно,
VM> но выглядит как-то несерьезно.
Думаю, что никак. Можешь только взять готовый чужой опыт переноса.
Кроме приведенных выше примеров на autoconf, можно смотреть продукты,
где проверяется выдача команды uname. Почему-то так почти все MTA строятся -
посмотри на exim, sendmail и postfix.
/netch
--- ifmail v.2.15dev5
* Origin: Lucky Netch Incorporated (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix/203287d658e60.html, оценка из 5, голосов 10
|