|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : Eugene Crosser 2:5020/400 30 Aug 2000 09:14:15 To : Vsevolod Melnikov Subject : Re: C++ и разные UNIX-ы -------------------------------------------------------------------------------- In article <gn9eo8.sk.ln@stan.sevix.ru>, Vsevolod Melnikov <seva@edunet.ru> writes: > Имеем некоторый код на C++ (написанный не мной). Еще имеем RedHat Linux 6.2, > FreeBSD 4.1 и Solaris 2.6 все на одном винте на пентиуме. Экспериментирую с > переносимостью кода. > > Вобщем, код с небольшими поправками я скомпилял и запустил. Интересен ряд > моментов. > > Первое. В исходниках употреблялась функция strsep. Под Linux и FreeBSD оно > скомпилялось, под Solaris - нет. Пришлось менять руками на strtok. При этом > gcc на всех трех платформах примерно одной версии - 2.9.что-то_еще. Вопрос: > почему на солярке про эту функцию компилятор не знал, а на фре и линуксе - > знал? Откуда вообще сакральное знание об этой функции берется и куда девается? Компилятор о функциях вообще ничего не должен знать (кроме заголовка, который ему в #include-е подсунули). Hа практике он про *некоторые* знает, но это эффект второго порядка малости. > Второе. Следующий очевидный вопрос - нельзя ли в подобных случаях не руками > исправлять исходники, а делать это автоматически или хотя бы > полуавтоматически? Может ли помочь в этом какой-нибудь софт типа Autoconf? Или > что-то еще? Софт типа autoconf (и automake для особо [не]ленивых) позволяет *писать* переносимый код. Если код написан непереносимо, его можно исправить только ручками, в том числе можно переложить под autoconf. Hо обычно это достаточно неслабая задача сама по себе. > Третье. При компиляции под разными платформами мне пришлось немного править > параметры опций -l в строке запуска gcc. Линукс, напрмимер, хотел, чтобы был > -lnsl, а солярка прекрасно обходилась без этого, зато требовала еще что-то > свое для сокетов. Вопрос тот же. А здесь компиляцию можно каким-либо софтом > автоматизировать? Чтобы, скажем, имея отлаженные исходникик под Linux не > ковыряться с переносом на каждой новой платформе. Хотя и не особо сложно, > но выглядит как-то несерьезно. Об этом тоже умеет позаботиться autoconf, если грамотно составить ему инструкцию :) В общем, ключевую работу все равно делает естественный интеллект :) Eugene --- ifmail v.2.15dev5 * Origin: Average (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix/169477c69cf0a.html, оценка из 5, голосов 10
|