Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
1-1169639469
msgipss
2007-01-24 14:51
2007.03.25
как изменить кодировку ответа web службы


4-1162879871
Николай1984
2006-11-07 09:11
2007.03.25
Обмен данными чарез LPT-LPT, USB-USB, COM-COM


2-1172934025
evgenij_
2007-03-03 18:00
2007.03.25
Name формы в текстовом виде


6-1160771242
Русло
2006-10-14 00:27
2007.03.25
Как разделять почтовые сообщения на прочтенные и еще нет


15-1172567960
GeLLeR
2007-02-27 12:19
2007.03.25
3D




   Наверх