Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Вниз

C++   Найти похожие ветки 

 
T   (2007-03-01 19:28) [0]

Я хочу написать консольное приложение на C++. Смогу ли откомпилировать код Linux или FreeBSD, не изменяя его. Или придется переписывать? Из системных вещей, которые будет использовать программа - это только работа с сокетами.


 
Celades ©   (2007-03-01 19:54) [1]

если будешь использовать стандартные средста, то менять ничего не надо.


 
Zeqfreed ©   (2007-03-01 19:55) [2]

Если использовать консоль только для простого последовательного вывода информации (использовать только встроенные в стандартную библиотеку Си функции), то переписывать не придется. Только парочку условных компиляций для работы с сокетами.


 
Celades ©   (2007-03-01 19:55) [3]

а вот виндовые сокеты не переносимы. попробуй cygwin


 
Romkin ©   (2007-03-01 21:51) [4]

Celades ©   (01.03.07 19:54) [1] Не факт совершенно. В С++ много неоднозначностей, и разные компиляторы интерпретируют их по-разному. Плюс - особенности ОС, те же входные/выходные потоки. Например, при подаче во входной поток символа EOF (код 26, Ctrl+Z), win прервет ввод, nix - нет :)


 
@!!ex ©   (2007-03-01 22:22) [5]

Все зависит от того, как пишешь и что юзаешь.
У нас(с братом в свое время писали) есть проект, который одинаково без проблем компилиться и студией и GCC.
Основные вещи - через стандартные библиотеки С.
То что платформозависимо(сеть и работа с файлами) - в отдельный юнит с дейфайнами для Винды и для НИксов. Хотя я в этом еще плаваю...


 
TUser ©   (2007-03-02 06:40) [6]

Людям удается, но, разумеется, без сокетов. Запомни - windows.h тебе подключать нельзя. А так - gcc и bcc32 почти полностью совместимы.


 
Rouse_ ©   (2007-03-02 09:32) [7]


> Смогу ли откомпилировать код Linux или FreeBSD, не изменяя его

Если будешь использовать конструкции поддерживаемые всеми ОС, то почему бы и нет? К примеру раз сокеты у тебя то PF_PACKED или ETH_P_IP под Windows напрямую использовать нельзя.


 
Alkid ©   (2007-03-02 09:46) [8]


> Я хочу написать консольное приложение на C++. Смогу ли откомпилировать
> код Linux или FreeBSD, не изменяя его. Или придется переписывать?
>  Из системных вещей, которые будет использовать программа
> - это только работа с сокетами.

Всё просто, используй только стандартную библиотеку ввода-вывода (обычную С-шную или потоковую С++-ную), STL, BOOST.

Что касается "особенностей компиляторов", то сейчас основные компиляторы (VS, gcc, watcom) соответсвуют стандарту C++ достаточно хорошо, что бы в 99% случаев не напороться на несовместимось. Только какждый из этих копиляторов поддерживает свои расширения к языку (типа Microsoft Specific). Их использовать нельзя и при компиляции советую явно указать компилятору, что бы он отключил свой расширенный синтаксис.

Если приложение сложное, то наверняка у тебя появятся куски кода специфичные для платформы. Пути решения два:
1. Условная компиляция
2. Выделение платформозависимого кода в отдельные классы, реализующие один интерфейс. Короче  PIMPL.

Так же крайне рекомендую разобраться с такой полезной утилитой, как make.


 
Alex Konshin ©   (2007-03-02 10:26) [9]

Можно все компилировать одним компилятором - GCC.
На Windows можно использовать MinGW или Cygwin. И там, и там есть GCC.  Под Cygwin размер exe будет больше и помимо этого он может требовать дополнительные DLL.


 
data ©   (2007-03-02 11:33) [10]


> Alex Konshin ©   (02.03.07 10:26) [9]
>
> Можно все компилировать одним компилятором - GCC.


я так и делаю. У меня  одни и теже исходники и для Вин и для Линукс. Советую написать отдельные объекты для работы с сокетами под каждую из операционок, но с одинаковым интерфейсом, прописаном в h файле, и при сборке использовать для Вин и для Лин нужную реализацию обекта (подцепить нужный файл в make). Советую именно такой способ, он по моему опыту, удобнее условной компиляции.


 
Сало ©   (2007-03-02 14:47) [11]


> Можно все компилировать одним компилятором - GCC.
> На Windows можно использовать MinGW или Cygwin. И там, и
> там есть GCC.  Под Cygwin размер exe будет больше и помимо
> этого он может требовать дополнительные DLL.

Если бы все было так просто. Попробуйте MinGW скомпильнуть Firebird, без проблем компилящийся gcc под Linux.


 
Некто ©   (2007-03-02 20:49) [12]

Можно. Правда такая фигня получится. :)



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.063 c
15-1172492815
pavel_guzhanov
2007-02-26 15:26
2007.03.25
Подскажите, в чем может быть проблема?


15-1172610646
rolex
2007-02-28 00:10
2007.03.25
Цвет кнопки ПУСК


15-1172660057
Юрий
2007-02-28 13:54
2007.03.25
Идея перепродажи порочна!


2-1172669503
evgenij_
2007-02-28 16:31
2007.03.25
TForm


15-1172761095
iXT
2007-03-01 17:58
2007.03.25
Аналог SpinEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский