информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Где водятся OGRы
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Пасиб, в принципе VC ничего, буду его осваивать. Только он... 01.08.06 14:22  Число просмотров: 2510
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Visual C++ - 16 метров вместе с рантаймовыми dll-ками. IDE
> - таки да, большая, но тебе ж она не надо. Platform
> SDK-шные и CRT-шные хэдеры - это еще метров 10-15 и lib-ы -
> примерно так же. Не так уж и толсто.

Пасиб, в принципе VC ничего, буду его осваивать. Только он встал на 66 мег, плюс 83 меговый сетаповский .сав. Ну да теперь уж дело сделано. Компильнулось, кучка варнингов на char* функции, сразу не заработало, видимо что-то с файловыми функциями, разберусь.

> Пойдет. Компиляторы там gcc. Cygwin - тот еще bloatware (уж
> лучше Visual Studio), MinGW (лучше сразу с MSYS-ом) -
> вполне. У меня каталог с MinGW (core, gcc, g++, make,
> binutils, w32api) + MSYS - 70 метров весит.

Верю, пробовать не буду.

> Вот тут ты совсем запутался. DJGPP - это все тот же gcc,
> только портированный под DOS. 16-битный код, 64-килобайтные
> сегменты. Оно тебе надо?
> На всякий случай, когда тебе понадобится компилер по DOS,
> то воспользуйся zip picker-ом
> http://www.delorie.com/djgpp/zip-picker.html

Качнул что надо, завелся, действительно 16 разрядный, хотя где-то читал что умеет работать с ДПМИ, увы не сам, а через библиотеку.

> vc/gcc - и тот и другой 32 бита и отлично работают с
> памятью.

Дык какой gcc, тот что в комплекте с МИНГВ или ЦГИВИН, или еще какой-то есть? А то искал я gcc для Виндовс - только эти два нашлись.

> Есть еще совсем крохотный lcc - довольно неплохой, но до
> vc/gcc не дотягивает. Посмотри, может для твоих целей
> сойдет
> http://www.cs.virginia.edu/~lcc-win32/

К стати классная вещь, всего 6.6 мег дистриб, простенький, но не компильнулось, похоже он С++ несовместимый... обидно.

> Ах, да! Как я мог забыть фетиш всех программистов за_30 -
> OpenWatcom
> http://www.openwatcom.org/

Ну это если мне совсем поплохеет, не фанатик я религиозный. Десяток-полтора лет назад попробовал поиграться с восьмой версией - был не в восторге.

> (простите мою иронию, но все виденные мною живые ваткомовцы
> были крайне религиозными людьми)

Еще раз спасибо.
<programming>
Какой маленький С компилер под винду удобнее. 31.07.06 13:00  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
Есть проги на С - скрипты для ВЕБ. Были компильнуты Симантеком 7.2 потому что нужно лопатить мегабайтными данными. На новых ОС (2003 и ХР) не идут:
INTERRUPT 0DH, GENERAL PROTECTION FAULT      possible illegal address
error code = 0000
eax = 00013E00      esi = 000100C7      flags = 3246        ds = 017F
ebx = FD2F0005      edi = 000000C0      eip = 00003361      es = 01C7
ecx = 00000000      ebp = 00C09FFF      cs = 019F           fs = 01AF
edx = 00000000      esp = 000000D2      ss = 017F           gs = 0000

---
Короче нужно скомпильнуть прогу для командной строки (консольное приложение).
Подобные тяжеловесы от Миекрософта и Борланда наверняка и это смогут, но хотелось бы попроще и полегче. Слышал про CGYWIN и MINGW. Пойдет ли что-нибудь из этого? Поковырялся с DJGPP - пока еще не поборол - сначала просил gcc, нашел, подсунул, теперь просит ld.exe, замучился искать, неизвестно что ему еще будет надо. Что посоветуете, чтоб с памятью нормально работал - 32 бита?
Тебе точно надо компилить, или может просто внести "падающую" прогу в список исключений DEP? -)) 31.07.06 17:43  
Автор: HandleX <Александр М.> Статус: The Elderman
Отредактировано 31.07.06 17:45  Количество правок: 1
<"чистая" ссылка>
Не тот случай. Эта прога ДОСовская, скомпильнута для ДОСа со... 01.08.06 14:07  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 01.08.06 14:08  Количество правок: 1
<"чистая" ссылка>
Не тот случай. Эта прога ДОСовская, скомпильнута для ДОСа со встроенным ДОС-Экстендером. Там вся память доступна и для чтения, и для записи, и для выполнения.
Забыл сказать, может не очень важно, есть машинка с 2000 виндами, там похоже ДЕПов еще не было. Когда-то на ней все работало, но отвалилось после чего - не помню, но точно в ДЕПах никто не ковырялся. Точнее именно эта прога там и не запускалась, но запускался сам Симантековский компилер, который теперь точно так же валится. Грешу на экстендер, на некорректную работу с ДПМИ, которая в принципе работает, но не всем виндам нравится. Похоже валится будет любая прога не в зависимости от наличия или отсутствия в ней ошибок, даже принтф( "Хелло, ворлд.\н" ); то есть до мэйн()а. Вариант остается один - перекомпильнуть.
Дык [упдате] 31.07.06 13:28  
Автор: amirul <Serge> Статус: The Elderman
Отредактировано 31.07.06 13:46  Количество правок: 1
<"чистая" ссылка>
> Короче нужно скомпильнуть прогу для командной строки
> (консольное приложение).
> Подобные тяжеловесы от Миекрософта и Борланда наверняка и
> это смогут, но хотелось бы попроще и полегче. Слышал про

Visual C++ - 16 метров вместе с рантаймовыми dll-ками. IDE - таки да, большая, но тебе ж она не надо. Platform SDK-шные и CRT-шные хэдеры - это еще метров 10-15 и lib-ы - примерно так же. Не так уж и толсто.

> CGYWIN и MINGW. Пойдет ли что-нибудь из этого? Поковырялся

Пойдет. Компиляторы там gcc. Cygwin - тот еще bloatware (уж лучше Visual Studio), MinGW (лучше сразу с MSYS-ом) - вполне. У меня каталог с MinGW (core, gcc, g++, make, binutils, w32api) + MSYS - 70 метров весит.

> с DJGPP - пока еще не поборол - сначала просил gcc, нашел,
> подсунул, теперь просит ld.exe, замучился искать,

Вот тут ты совсем запутался. DJGPP - это все тот же gcc, только портированный под DOS. 16-битный код, 64-килобайтные сегменты. Оно тебе надо?
На всякий случай, когда тебе понадобится компилер по DOS, то воспользуйся zip picker-ом
http://www.delorie.com/djgpp/zip-picker.html

> неизвестно что ему еще будет надо. Что посоветуете, чтоб с
> памятью нормально работал - 32 бита?

vc/gcc - и тот и другой 32 бита и отлично работают с памятью.

Есть еще совсем крохотный lcc - довольно неплохой, но до vc/gcc не дотягивает. Посмотри, может для твоих целей сойдет
http://www.cs.virginia.edu/~lcc-win32/

-------------------

Ах, да! Как я мог забыть фетиш всех программистов за_30 - OpenWatcom
http://www.openwatcom.org/

(простите мою иронию, но все виденные мною живые ваткомовцы были крайне религиозными людьми)
Пасиб, в принципе VC ничего, буду его осваивать. Только он... 01.08.06 14:22  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Visual C++ - 16 метров вместе с рантаймовыми dll-ками. IDE
> - таки да, большая, но тебе ж она не надо. Platform
> SDK-шные и CRT-шные хэдеры - это еще метров 10-15 и lib-ы -
> примерно так же. Не так уж и толсто.

Пасиб, в принципе VC ничего, буду его осваивать. Только он встал на 66 мег, плюс 83 меговый сетаповский .сав. Ну да теперь уж дело сделано. Компильнулось, кучка варнингов на char* функции, сразу не заработало, видимо что-то с файловыми функциями, разберусь.

> Пойдет. Компиляторы там gcc. Cygwin - тот еще bloatware (уж
> лучше Visual Studio), MinGW (лучше сразу с MSYS-ом) -
> вполне. У меня каталог с MinGW (core, gcc, g++, make,
> binutils, w32api) + MSYS - 70 метров весит.

Верю, пробовать не буду.

> Вот тут ты совсем запутался. DJGPP - это все тот же gcc,
> только портированный под DOS. 16-битный код, 64-килобайтные
> сегменты. Оно тебе надо?
> На всякий случай, когда тебе понадобится компилер по DOS,
> то воспользуйся zip picker-ом
> http://www.delorie.com/djgpp/zip-picker.html

Качнул что надо, завелся, действительно 16 разрядный, хотя где-то читал что умеет работать с ДПМИ, увы не сам, а через библиотеку.

> vc/gcc - и тот и другой 32 бита и отлично работают с
> памятью.

Дык какой gcc, тот что в комплекте с МИНГВ или ЦГИВИН, или еще какой-то есть? А то искал я gcc для Виндовс - только эти два нашлись.

> Есть еще совсем крохотный lcc - довольно неплохой, но до
> vc/gcc не дотягивает. Посмотри, может для твоих целей
> сойдет
> http://www.cs.virginia.edu/~lcc-win32/

К стати классная вещь, всего 6.6 мег дистриб, простенький, но не компильнулось, похоже он С++ несовместимый... обидно.

> Ах, да! Как я мог забыть фетиш всех программистов за_30 -
> OpenWatcom
> http://www.openwatcom.org/

Ну это если мне совсем поплохеет, не фанатик я религиозный. Десяток-полтора лет назад попробовал поиграться с восьмой версией - был не в восторге.

> (простите мою иронию, но все виденные мною живые ваткомовцы
> были крайне религиозными людьми)

Еще раз спасибо.
Я наверное неправильно выразился. Cygwin - хороший пакет ,... 01.08.06 15:10  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> > Visual C++ - 16 метров вместе с рантаймовыми dll-ками.
> IDE
> > - таки да, большая, но тебе ж она не надо. Platform
> > SDK-шные и CRT-шные хэдеры - это еще метров 10-15 и
> lib-ы -
> > примерно так же. Не так уж и толсто.

> Пасиб, в принципе VC ничего, буду его осваивать. Только он
> встал на 66 мег, плюс 83 меговый сетаповский .сав. Ну да
> теперь уж дело сделано. Компильнулось, кучка варнингов на
> char* функции, сразу не заработало, видимо что-то с
> файловыми функциями, разберусь.

> > Пойдет. Компиляторы там gcc. Cygwin - тот еще
> bloatware (уж
> > лучше Visual Studio), MinGW (лучше сразу с MSYS-ом) -
> > вполне. У меня каталог с MinGW (core, gcc, g++, make,
> > binutils, w32api) + MSYS - 70 метров весит.

> Верю, пробовать не буду.

Я наверное неправильно выразился. Cygwin - хороший пакет , но очень уж толстый. Что в твоем случае неприемлимо. Что же до его сравнения с VS, то Cygwin - это эмулятор POSIX-а (вызовы) и GNU (тулзы) под винды и нужен в основном для сборги GNU-сных же тулзов из исходников. А вот MinGW/MSYS - в самый раз. В принципе тоже эмуляция POSIX + гнусные тулзы, но гораздо менее полная (только самое нужное) и как следствие гораздо меньше по размеру.

> > vc/gcc - и тот и другой 32 бита и отлично работают с
> > памятью.
>
> Дык какой gcc, тот что в комплекте с МИНГВ или ЦГИВИН, или
> еще какой-то есть? А то искал я gcc для Виндовс - только
> эти два нашлись.

Они там одинаковые. Разница только в количестве ДОПОЛНИТЕЛЬНЫХ тулзов/количестве эмулированных POSIX-овых вызовов.

> К стати классная вещь, всего 6.6 мег дистриб, простенький,
> но не компильнулось, похоже он С++ несовместимый... обидно.

Ага. Он еще и Open Source. Там LL-парсер и все такое. Я на его основе разбирался в принципах построения компиляторов.
Из всего этого можно сделать вывод MinGW - это gcc, который... 01.08.06 18:28  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Я наверное неправильно выразился. Cygwin - хороший пакет ,
> но очень уж толстый. Что в твоем случае неприемлимо. Что же
> до его сравнения с VS, то Cygwin - это эмулятор POSIX-а
> (вызовы) и GNU (тулзы) под винды и нужен в основном для
> сборги GNU-сных же тулзов из исходников. А вот MinGW/MSYS -
> в самый раз. В принципе тоже эмуляция POSIX + гнусные
> тулзы, но гораздо менее полная (только самое нужное) и как
> следствие гораздо меньше по размеру.
> Они там одинаковые. Разница только в количестве
> ДОПОЛНИТЕЛЬНЫХ тулзов/количестве эмулированных POSIX-овых
> вызовов.
Из всего этого можно сделать вывод MinGW - это gcc, который можно запускать из-под Виндовс, который генерит правильные екзешники для Виндовс, имеет набор дополнительных библиотек, но для GUI и прочего используются библиотечные функции, по синтаксису не свойственные Виндовсу, так?
В целом да 01.08.06 21:02  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
> Из всего этого можно сделать вывод MinGW - это gcc, который
> можно запускать из-под Виндовс, который генерит правильные
> екзешники для Виндовс, имеет набор дополнительных
> библиотек, но для GUI и прочего используются библиотечные
> функции, по синтаксису не свойственные Виндовсу, так?

Небольшое уточнение. В том же MinGW (насчет Cygwin-а не знаю, но скорее всего тоже) есть и хэдеры и либы для линковки Win32 (пакет w32api). Там даже есть ddk-шные хэдеры, но мне кажется извращением делать столько лишней работы чтобы в конечном итоге заюзать то, что в винде доступно и так. Собственно единственная причина, которая на мой взгляд может побудить человека писать под MinGW на виндах - это совместимость с POSIX (тулзы можно и без всякого gcc использовать - весьма удобно)
Получилось, заработало на VC. Не сразу, конечно, но спасибо... 04.08.06 15:22  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 04.08.06 15:23  Количество правок: 1
<"чистая" ссылка>
> доступно и так. Собственно единственная причина, которая на
> мой взгляд может побудить человека писать под MinGW на
> виндах - это совместимость с POSIX (тулзы можно и без
> всякого gcc использовать - весьма удобно)

Получилось, заработало на VC. Не сразу, конечно, но спасибо POSIXу, только варнинги и все одного плана касаемо строковых функций и подобных. Одну ошибку долго искал - она была в одном месте, а проявлялась в другом. Что самое странное, при компиляции Симантеком она не проявлялась.
Смутило, что екзешка жирная получилась. Перекомпилил с другим ключикам - раз в восемь уменьшилась, но переносимость пропала - ДЛЛку потребовала.
Размерность данных немного не понравилась
sizeof( char )        = 1
sizeof( short )       = 2
sizeof( int )         = 4
sizeof( long )        = 4
sizeof( long long )   = 8
sizeof( float )       = 4
sizeof( double )      = 8
sizeof( long double ) = 8
sizeof( void * )      = 4

---
Могли бы long сделать 8 байт, а с long long ом не связываться, что вполне удовлетворяло бы классику. Ну и отсутствие 10 байтового long double не радует не смотря на то, что как раз для него и выделена соответствующая категория в х86 сопроцессорах.
В общем не смотря на то, что размерчик не мал, все равно компилер удобоваримый, на mingw не буду время тратить, спасибо.
Кстати об уменьшении размеров 04.08.06 18:32  
Автор: amirul <Serge> Статус: The Elderman
<"чистая" ссылка>
http://www.bugtraq.ru/forum/faq/programming/small1.html
http://www.bugtraq.ru/forum/faq/programming/small2.html
http://www.bugtraq.ru/forum/faq/programming/small3.html


> Могли бы long сделать 8 байт, а с long long ом не

А куда long long тогда девать? :-)

> связываться, что вполне удовлетворяло бы классику. Ну и
> отсутствие 10 байтового long double не радует не смотря на
> то, что как раз для него и выделена соответствующая
> категория в х86 сопроцессорах.

Кстати, длины типов (и long, и long long, и long double) - в принципе одинаковы для всех популярных IA32 компиляторов

> В общем не смотря на то, что размерчик не мал, все равно
> компилер удобоваримый, на mingw не буду время тратить,
> спасибо.

Да пожалуйста
Гуд, принтф, маллок и стрххх нужны. Попробую маленькую... 07.08.06 10:58  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
Отредактировано 07.08.06 11:01  Количество правок: 2
<"чистая" ссылка>
> http://www.bugtraq.ru/forum/faq/programming/small1.html
> http://www.bugtraq.ru/forum/faq/programming/small2.html
> http://www.bugtraq.ru/forum/faq/programming/small3.html

Гуд, принтф, маллок и стрххх нужны. Попробую маленькую библиотеку. Хотя прога, которая размерность типов данных печатает, весит всего пять с половиной кило.

> А куда long long тогда девать? :-)

Ну для начала его не надо было вводить, чтоб потом не думать что с ним делать. В конце концов huge или large. У Ричи и Кернигана long long не было. Целых типов и так предостаточно. На DECах (Альфах), насколько я слышал (сам не писал!), все "по честному", что может показаться непривычным после долгого программизма под 16 разрядными ОС: то есть char по прежнему 1, short естественно 2, int = 4, long = 8. Новых типов не введено, неравенство char <= short <= int <= long соблюдается.
В принципе long long или что-то подобное большое можно было бы оставить на будущее, а именно 128 разрядное или 16 байтное. В скором будущем и такие процы, уверен, появятся. Мало того до поры до времени можно было бы встроенными в компилятор возможностями эмулировать 16 байтовые типы 8 байтовыми, как 32 разрядность (long) на стареньких 16 разрядных машинах эмулировалась.

> Кстати, длины типов (и long, и long long, и long double) -
> в принципе одинаковы для всех популярных IA32 компиляторов

В стареньком Борланде 3.1 long double был-таки 80 разрядный. Только что не поленился добрался до старичка и проверил.
Ну что им мешает? Так уж сложно в компилере реализовать, если такая возможность есть начиная с самых стареньких х87.

Ну не очень это все "приперло", но неприятно. Хочется "человеческого" стандарта. Да, действительно можно тайпдефить int64 на long long или на что-то еще в переспективе портирования, ну и чего, всгда этой ерундой заниматься, вместо того, чтоб типы и так по размеру были определены...
long double, размерностью 80 бит по бОльшему счету не нужен, но когда компилишь библиотечку для .dbf, где числовые поля могут быть более 20 десятичных знаков, поневоле задумываешься о последующих, от тебя независящих, багах, которые могут всплыть однажды.
Насчет маленькой библиотеки 08.08.06 01:31  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
Насколько я знаю msvcrt.dll идет со всеми виндами. Так что вообще говоря достаточно в свойствах проекта указать Use dynamic DLL в качестве RTL, и данных строчек:
#pragma comment(linker, "/MERGE:.rdata=.text")
#pragma comment(linker, "/MERGE:.data=.text")
#pragma comment(linker, "/FILEALIGN:512 /SECTION:.text,ERW /IGNORE:4078")
Достаточно для ехешника в 1.5 кб при полном сишном функционале.
Эх, какие свойства, какого проекта... Похоже я ставил... 08.08.06 14:22  
Автор: DPP <Dmitry P. Pimenov> Статус: The Elderman
<"чистая" ссылка>
> Насколько я знаю msvcrt.dll идет со всеми виндами. Так что
> вообще говоря достаточно в свойствах проекта указать Use

Эх, какие свойства, какого проекта... Похоже я ставил минимальную версию без всяких оболочек и проект-менеджеров. Ну ничего, попробую в командной строке подобрать нужное заклинание.

> dynamic DLL в качестве RTL, и данных строчек:
> #pragma comment(linker, "/MERGE:.rdata=.text")
> #pragma comment(linker, "/MERGE:.data=.text")
> #pragma comment(linker, "/FILEALIGN:512 /SECTION:.text,ERW
> /IGNORE:4078")
> Достаточно для ехешника в 1.5 кб при полном сишном
> функционале.

Ведь получалось же у меня сгенерить екзешку в 5.6 кб. А, вот, когда скрипт компильнул так, что он с полутра сотни кб до 22 уменьшился, то на другом компе он ДЛЛку попросил, причем не msvcrt.dll, а какую-то другую. Посмотрю, разберусь.
Смутило только одно - судя по размеру показалось что екзешка тянет за собой кучу того, что не надо. Когда же размер ее уменьшился, то похоже она захотела видет это "то что не надо" в виде ДЛЛки. Ну не даром библиотеки придумали - чтоб не использующиеся функции в екзешку не включались. В общем поиграюсь с параметрами компиляции и начну с этих советов.
cl.exe, параметр /MD 08.08.06 15:32  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach