|
Модераторы: xvr |
|
Tuman18 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.9.2016 Репутация: нет Всего: нет |
Ответьте, пожалуйста, нубу на вопрос: Чем программирование на С++ под Unix отличается от того же под Linux (конкретно, Ubuntu)?
Странный вопрос? Сейчас расскажу почему он у меня возник. Появился у нас в универе предмет «основы Unix-подобных систем». Но, видно, универ у нас убогий и нас стали обучать Unix-у на эмуляторе Cygwin установленном под Windows XP... Написали мы три маленькие программки на с++, скомпилировали g++, запустили, работает. Дома эти программки надо доделать согласно вариантов... У меня дома установлена Ubuntu 14.04, да вот беда, программки эти, принесенные с университета, не компилируются, выдают кучу ошибок... Вот и стало интересно, почему так. Или программирование под Unix и Ubuntu отличается или это только под эмулятором другой компилятор или это из-за того что я такой нуб... Знает кто? P.S. Если вина моя, официально разрешаю бить и ругать. |
|||
|
||||
_zorn_ |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 1077 Регистрация: 21.8.2007 Репутация: нет Всего: 12 |
Вот и давайте проявлять любопытство (на будущее - система не имеет значения).
Ошибки - я понял что вы постеснялись, но именно они указывают что у вас не так. Скорей всего тупо не установлен g++ дома. |
|||
|
||||
Tuman18 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.9.2016 Репутация: нет Всего: нет |
Ах да... :)
А это то что я пытался скомпилировать.
|
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
В программе ошибка - не хватает #include <string.h>
То, что на cygwin'е это собралось - чистая случайность (string.h оказался включен через какой то другой include файл). Разные версии компилятора. Запустите g++ --version на обоих системах и сравните версии |
|||
|
||||
Tuman18 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 16.9.2016 Репутация: нет Всего: нет |
Спасибо! include добавил - ошибки пропали, варнинги остались. Зато теперь компилируется и работает!
Версии g++, действительно, очень разные: Ubuntu - 4.8.4, cygwin - 2.95.5/ |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 20 Всего: 223 |
Версии слишком разные (а cygwin явно слишком древний).
А варнинги вполне по делу - не рекомендуется функция gets к применению. Используйте fgets вместо нее |
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
Во-первых, речь идет о программе на С++. Тут надо использовать iostream, вместо gets/fgets/open/read/write/scanf/printf...
Во-вторых, подключать надо не string.h, а cstring, так как мы пишем на С++. В-третьих, open с флагом O_CREAT предполагает наличие третьего параметра, например: S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH Сколько лет прошло, а в ВУЗах ничего не изменилось. Как было отставание полтора десятка лет, так и осталось... |
|||
|
||||
azesmcar |
|
|||
uploading... Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 1 Всего: 211 |
||||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 16 Всего: 196 |
azesmcar, ну сейчас хотя бы cygwin. В мое время (конец девяностых - начало двухтысячных) был Borland C++ 3.0
|
|||
|
||||
Olej |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 30.11.2016 Репутация: нет Всего: нет |
Ничем. |
|||
|
||||
bankuss |
|
|||
Опытный Профиль Группа: Участник Сообщений: 396 Регистрация: 26.3.2004 Репутация: нет Всего: 4 |
раз ничем, то тогда такой вопрос: так как недавно перелез на Мак, то решил пару прожек перекомпилить в новой системе. окружение у меня стандартное: xcode + command line tools + clang (так же есть отдельно и gcc), ОС последняя - Sierra. взял исходники программы (она 2001 года, но код универсальный, под разные ОС, писан на чистом Си) залил в проект xcode. исправил небольшие синтаксические ошибки, стал собирать - все скомпилировалось, но линкер вываливает с ошибкой типа Linker Error "duplicate symbol" итд итп (сейчас точно не напишу - проект дома). причем такое чувство что он ВСЕ переменные проекта записал в дубли. запускаю этот проект на linux - все компилируется и собирается нормально. т.е. ошибок в коде нет. (там их и нет -ибо clang компилирует нормально) а вот что нужно линкеру - вообще не ясно. до настроек линкера я так и не добрался, в xcode все как-то запрятано. |
|||
|
||||
Olej |
|
|||
Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 30.11.2016 Репутация: нет Всего: нет |
На C (хотя тема здесь про C++) не бывает "универсальный код"! В Linux/UNIX - это POSIX. И только это - C. В Windows то, что называют C - это нонсенс, чёрт знает что... Очевидно, у вас в MacOS - это что-то промежуточное между... |
|||
|
||||
Правила форума "С/С++: Программирование под Unix/Linux" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |