Сейчас на форуме: zombi-vadim, zds (+4 невидимых)

 [email protected] —› Программирование —› GCC и include
. 1 . 2 . 3 . >>
Посл.ответ Сообщение


Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 21 октября 2013 17:57 · Поправил: Dart Sergius
· Личное сообщение · #1

С радости что вышел gcc 4.8.1, я сдуру ума взял себе его и поставил.
И так как я пишу используя Qt - то естественно захотелось перекомпилить(ну и нужда то что с новым gcc собирается и падает все).
Все впринципе проходило хорошо, сконфигурировал , поставил компилить, и тут посыпались веселые приколюхи.
Одним словом, make работающий в 2 потока вывалил мне около 8000 строк ошибок. Все село к 1-му файлу:
wtypes.h(использовался для ole.h,ole2.h, oleauto.h ...). Там обхявлялись структуры, которые потом использовались. Как бы include был сделан верно везде(местами ничего не перепутано и прочее). Но все равно сыпались ошибки.
Добавил флаг -E и увидел всю причину.
Этот файл добавлялся препроцессором в самом конце, уже после того как описывались файлы, в которых они использовались.
Практически перед "нашим кодом". Ну и естественно, находя вначале тип данных, описаный позже - он возмущался.
Неужели все сломали?

ах да, система у меня win xp, mingw

| Сообщение посчитали полезным: Abraham

Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 21 октября 2013 18:12
· Личное сообщение · #2

Dart Sergius пишет: Неужели все сломали?
У меня работает, компилил под винду, ошибка где то у вас.



Ранг: 53.9 (постоянный), 33thx
Активность: 0.050
Статус: Участник

Создано: 21 октября 2013 20:18 · Поправил: deniskore
· Личное сообщение · #3

Тоже использую GCC 4.8.1 (x86-x64) все в порядке. Пример кода?




Ранг: 105.6 (ветеран), 36thx
Активность: 0.10
Статус: Участник

Создано: 22 октября 2013 15:27 · Поправил: Dart Sergius
· Личное сообщение · #4

deniskore, код - Qt. Просто с уже готовой сборкой Qt новый компилятор не хорошо сотрудничает. Вот и решил собрать под новый.
Qt пока без моих всяких изысканий.

Переустановил mingw. Все пути, все прописал, однако опять та же самая история. Могу выложить "подпроект Qt ", который сбоит, и файлы, сгенерированные с аргументом g++ -E , только они под 10 метров вместе весят.
Надо на linux перебираться по хорошему. Да все никак не решусь из-за отладчиков...


Справился с этим багом.
Во всех хедерах от MinGW убрал include <wtypes.h>(он неверно подключался). Оставил только в 1-м модуле, где используется. Дальше пришлось добавить пару include в файлы проекта(странно, хоть сырцы и с сайта Qt скачаны, но баги все равно есть).
Но сам баг тот, что если сделать include одного файла в нескольких файлах, то препроцессор вставляет текст зависимости не сразу почему-то. А потом.

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



Ранг: 4.0 (гость)
Активность: 0=0
Статус: Участник

Создано: 25 октября 2013 08:56
· Личное сообщение · #5

VisualStudio установлена? в переменной окружения INCLUDE путей на ее каталог случаем нет?
Вчера без проблем пересобрал Qt 4.8.5 MinGW 4.8.1



Ранг: 23.4 (новичок)
Активность: 0.010
Статус: Участник

Создано: 26 октября 2013 02:05 · Поправил: TheNozza
· Личное сообщение · #6

http://love5an.livejournal.com/364435.html
Мужики, а давайте его убъём)
Всё ж неправда, ложь одна.
Найти бы этого некомпетентного специалиста и надрать ему задницу за плюсы)




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 26 октября 2013 02:29
· Личное сообщение · #7

ну да
а еще его и его
да и вообще это подсудное дело

| Сообщение посчитали полезным: DenCoder

Ранг: 23.4 (новичок)
Активность: 0.010
Статус: Участник

Создано: 26 октября 2013 03:21
· Личное сообщение · #8

Кстати, посмотри в сторону Qt/C++. Он куда более приятный, удобный и здравый.
Бред, без знания с++ невозможно освоить один из фреймворков, который на плюсах базируется.

http://www.linux.org.ru/forum/development/9577161
блок кода выглядит вполне логично, приведён не полностью, чтобы можно было судить о его корректности/некорректности.

http://www.rsdn.ru/forum/flame.comp/5325486.flat#5325486
var list - это не с++




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 26 октября 2013 03:28
· Личное сообщение · #9

читай все доконца, а еще лучше всю тему)
var list это альтернатива с которой он доказыает что с# лучше а c++ сливает на списках

ну а так вообще хватает таких срачей по рунету) это еще ссылок с гемдева нет



Ранг: 23.4 (новичок)
Активность: 0.010
Статус: Участник

Создано: 26 октября 2013 05:34 · Поправил: TheNozza
· Личное сообщение · #10

-




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 28 октября 2013 05:19
· Личное сообщение · #11

вот нашли о чем спорить да)) си он и в африке си, хоть плюснутый, хоть нет

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 08 декабря 2013 02:27 · Поправил: Dr0p
· Личное сообщение · #12

Решил заценить это поделие. Хелловорлд компилит в 80k шлака. -O ничего не даёт. -nodefaultlib и генерится жуть скока фейлов.. Я есчо при загрузке этого говна стал подозревать про его качество. Линуксы этим конпиляться ?




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 08 декабря 2013 02:30
· Личное сообщение · #13

осилил линуховый компиль? когда будет side под линуху? ))




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 08 декабря 2013 03:21
· Личное сообщение · #14

reversecode

Посмотреть хотел качество кодогенерации. Для линей наверное сгодится

| Сообщение посчитали полезным: ARCHANGEL

Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 08 декабря 2013 10:22
· Личное сообщение · #15

Попробуй пройтись strip'ом или objdump'ом. Может полегчает немного elf




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 08 декабря 2013 13:52 · Поправил: reversecode
· Личное сообщение · #16

качество там нормальное) такое же как и в msvc

берем любой известный проект, компилим под три оси mac win lin, результирующие бинари отличаются по размеру около 2%



Ранг: 20.8 (новичок), 7thx
Активность: 0.010.02
Статус: Участник

Создано: 08 декабря 2013 14:23 · Поправил: int_256
· Личное сообщение · #17

Dr0p пишет:
Решил заценить это поделие. Хелловорлд компилит в 80k шлака. -O ничего не даёт. -nodefaultlib и генерится жуть скока фейлов.. Я есчо при загрузке этого говна стал подозревать про его качество. Линуксы этим конпиляться ?


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



Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 08 декабря 2013 16:00
· Личное сообщение · #18

reversecode пишет:
качество там нормальное) такое же как и в msvc


сравнимое с clang?



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 08 декабря 2013 16:39
· Личное сообщение · #19

sendersu пишет: сравнимое с clang?
Когда последний раз смотрел сlang, то там был довольно убогий кодогенератор, на уровне древнего msvc или gcc, там фишка в другом, в выводе данных о сборке, примерно так же информативно, как в delphi, что сводит необходимость отладки к минимуму.
Gcc тоже не стоит на месте и версия 4.8 переписана на с++, связи с этим ожидается больше патчей, больше хардкора.



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 08 декабря 2013 19:46
· Личное сообщение · #20

На сколько знаю intel'овский компилятор в плане оптимизаций рулит



Ранг: 81.6 (постоянный), 102thx
Активность: 0.060.02
Статус: Участник

Создано: 08 декабря 2013 20:38 · Поправил: Dart Raiden
· Личное сообщение · #21

У GCC, насколько помню, другая проблема - его поддерживают несколько олдскульных бородачей, а новые участники боятся соваться в код. И если с бородачами что-то случится, то никто не будет знать, как оно вообще работает.

| Сообщение посчитали полезным: Dr0p


Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 08 декабря 2013 20:46
· Личное сообщение · #22

с таким успехом слово GCC, можно заменить на любое другое, например exelab

| Сообщение посчитали полезным: Dynamic


Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 09 декабря 2013 00:03
· Личное сообщение · #23

int_256

> много лишнего убирается прямыми руками

Наверное руки длинные должны быть, да ?

- обработать десятком файлов из пакета ?

Он ваще опенсурсный ?

reversecode

Качество компиля определяется качеством нэйтивного кода. Я таки понял что за закорючки в атт асме, это нужно для вставок(не инлайн) из пары инструкций.



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 09 декабря 2013 00:50
· Личное сообщение · #24

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

0ef1_09.12.2013_EXELAB.rU.tgz - main.rar




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 09 декабря 2013 01:05
· Личное сообщение · #25

F_a_u_s_t

> На хелловордах качество компилей не проверяют.

Есчо как проверяют!

Code:
  1. 00401029 sub esp,10
  2. 0040102C add esp,1C


И это в коде из десятка инструкций, лол.



Ранг: 158.4 (ветеран), 123thx
Активность: 0.140.49
Статус: Участник

Создано: 09 декабря 2013 01:38
· Личное сообщение · #26

Dr0p
не отмазывайся. Показывай уже ехе - всем интересно, как ты умудрился хелловорд на 80к написать. MessageBoxA в буфер чтоле отморфил?




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 09 декабря 2013 01:52
· Личное сообщение · #27

rmn

Загрузился гцц пак, сурс с одной тока printf, конпилим без опций "\MinGW\bin\gcc test.c". На выходе получаем ~80k экзешник.

Code:
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.          printf("hel");
  6.          return(0);
  7. }


> MessageBoxA в буфер чтоле отморфил?

На 10-ке NL он много меньше

c975_09.12.2013_EXELAB.rU.tgz - test.zip




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 09 декабря 2013 02:08
· Личное сообщение · #28

> вот здесь вам точно стоит подучить матчасть и почитать маны

Мне не нравится си, у него какой то не понятный синтаксис в целом. Ну как вот такую конструкцию не назвать костылями:

Code:
  1. char BreakPoint[]={
  2.          0xCC
  3. };
  4.  
  5.   typedef void (__stdcall *BreakRef)();
  6.  
  7.   BreakRef BreakCall = (BreakRef)&BreakPoint[0];
  8.  
  9.   BreakCall();


- накой тут ваще новый тип нужен. Абстракция есть труъ, но в данном случае параноидальная. Код на скрипте не должен быть больше, чем на асме



Ранг: 0.0 (гость)
Активность: 0.250
Статус: Участник

Создано: 09 декабря 2013 02:08
· Личное сообщение · #29

Dr0p пишет: И это в коде из десятка инструкций, лол.
Флажки потыкать и будет другой код, мне лень это делать, речь была о размере.

Dr0p пишет: На выходе получаем ~80k экзешник.
Ужос, так скомпилить, это нужно постараться.
У мну без каких либо опций такая ня не собирается, хз.


d121_09.12.2013_EXELAB.rU.tgz - main.rar




Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 09 декабря 2013 02:12
· Личное сообщение · #30

F_a_u_s_t

> Ужос, так скомпилить, это нужно постараться.

Я ничего не старался, дёрнул конпиль без опций и всё. Все вопросы к авторам сей поделки. У меня вчерашняя версия(загрузил вчера в смысле).


. 1 . 2 . 3 . >>
 [email protected] —› Программирование —› GCC и include
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати