Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.25;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
15-1172866869
alpha5
2007-03-02 23:21
2007.03.25
Стили приложения


8-1153855242
Max.66RUS
2006-07-25 23:20
2007.03.25
Конвертация BMP в JPG...


15-1172460416
Slider007
2007-02-26 06:26
2007.03.25
С днем рождения ! 25 февраля


1-1170401901
Салат
2007-02-02 10:38
2007.03.25
выравнивание alRight/Left и alBottom на форме


1-1170488282
TCrash
2007-02-03 10:38
2007.03.25
Сервисы NT