powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как я люблю gcc
25 сообщений из 66, страница 2 из 3
Как я люблю gcc
    #39383530
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglНу не так - он должен выругаться об неоднозначности, а не линковать что первое попало.
Не должен.
Как раз по дизайну он должен брать первое из нескольких имен в порядке указания их библиотек.
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39383551
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargldbpatch..бред про ХММ убран...
...а тут ты передаешь over 98 байт, и спрашивается в задаче, кто ССЗБ ? Будь как все, передавай указатель на свою копию в стеке, конечный эффект будет такой-же.Я и передаю по указателю. Какая разница, если выравнивание навернуто.

Так так, похоже про thread.join() я соврал - у меня было больше потоков, чем я думал - корректно работает.

бред про XMM? ну ну.

а так, ты там выше писал дословно:

> Структурка передается параметром чужим функциям и соответственно, чувствительна к выравниванию

про указатель ты там ничего не писал. путаешься в показаниях?
в остальном - ты опять, в 25 раз СЗЗБ. кто мешает выровнять структуру вручную, накидав туда dummy полей нужных длин и типов?
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39383572
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskySiemarglНу не так - он должен выругаться об неоднозначности, а не линковать что первое попало.
Не должен.
Как раз по дизайну он должен брать первое из нескольких имен в порядке указания их библиотек.Где кстати прописано поведение линкера ?
Ты как спец по стандартам, можешь знать )
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39383659
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Илья, я категорически против правки моих постов, даже с благой целью улучшения этого убогого сайта. Ок ?
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39383693
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglГде кстати прописано поведение линкера ?
Ты как спец по стандартам, можешь знать )
Мне лень искать. Но алгоритм выбора функции среди одноименных четко описан.
И к стандартам я никакого отношения не имею, а наоборот люблю частные случаи ))
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39383798
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglИлья, я категорически против правки моих постов, даже с благой целью улучшения этого убогого сайта. Ок ?
Он оказал тебе услугу. По джентльменски, не став клеить стикер "Отредактировано".
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39383982
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglИлья, я категорически против правки моих постов, даже с благой целью улучшения этого убогого сайта. Ок ?

ОК, просто не давай повода...
:-)
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39384688
Common Lisp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyМне лень искать. Но алгоритм выбора функции среди одноименных четко описан.
В огороде бузина, а в Киеве — дядька.

Какое отношение overload resolution имеет к выбору линкером символа из нескольких translation units?
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39384912
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Common LispКакое отношение overload resolution имеет к выбору линкером символа из нескольких translation units?
Никакое. Это вы домыслили про перегрузку ))

А вот например то про что я говорил:
1) .cpp с функцией f() возвращающей 1
2) .cpp с функцией f() возвращающей 2 с атрибутом weak
3) программа собранная с 1 и 2
Какая из f будет взята четко определено.
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39384982
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyКакая из f будет взята четко определено.
Лично я ещё с первой своей встречи с С помню, что порядок указания объектных файлов и
библиотек в командной строке линкера имеет очень большое значение. Именно потому, что
функция берётся из первой встреченной.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39385083
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то у меня не получается воспроизвести, хотя точно был какой то казус
D:\VSProjects\ambigui>cl main.cpp tru1.cpp tru2.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.

main.cpp
tru1.cpp
tru2.cpp
Generating Code...
Microsoft (R) Incremental Linker Version 7.10.3077
Copyright (C) Microsoft Corporation. All rights reserved.

/out:main.exe
main.obj
tru1.obj
tru2.obj
tru2.obj : error LNK2005: "int __cdecl fnx(void)" (?fnx@@YAHXZ) already defined in tru1.obj
main.exe : fatal error LNK1169: one or more multiply defined symbols found

D:\VSProjects\ambigui>gcc main.cpp tru1.cpp tru2.cpp
E:\windows\TEMP\ccJmDlXv.o:tru2.cpp:(.text+0x0): multiple definition of `fnx()'
E:\windows\TEMP\ccnEcvSD.o:tru1.cpp:(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status

==============вариант с библиотечной ф-цией=================

D:\VSProjects\ambigui>gcc main.cpp tru1.cpp atexit2.cpp
E:\windows\TEMP\ccCiW5FA.o:atexit2.cpp:(.text+0x0): multiple definition of `atexit'
D:/codeblocks-16.01/MinGW/bin/../lib/gcc/mingw32/4.9.2/../../../crt2.o:crt1.c:(.text+0x2c0): first defined here
collect2.exe: error: ld returned 1 exit status

D:\VSProjects\ambigui>gcc --version
gcc (tdm-1) 4.9.2
Copyright (C) 2014 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39385350
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Воспроизводится для С, но не CPP.

Причем msvc2003 и gcc работают в этом случае одинаково.

Век живи, век учись (
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39390699
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот. Как раз повторно наткнулся на грабли 2)

Претензии:
1)Полный бордель внутри каталога gcc
-include лежат в gcc\include,
но
для С++ есть своя версия, лежит gcc\lib\gcc\mingw32\4.9.2\include\c++

-ar.exe, as.exe и еще пяток хранятся в двух копиях в разных подкаталогах

-lib частично лежат в gcc\lib,
но
немного в gcc\mingw32\4.9.2

2)ИЧСХ, обычно компилятор сам знает, где искать свое барахло, но иногда....
Ну не хочет он, ****, при сборке dll видеть -lgcc, ни сам, ни если ему под нос положить.
Решил: Помогает только положить под нос и сказать ld ... libgcc.a

3)Статическая сборка как минимум под Windows потребует замену gcc libc,
Но динамическую же сборку - могу записать в плюс: сборку с-программ с msvcrt.dll без лишних зависимостей вообще, а С++ рантайм пару мегабайт и без геморроя с манифестами и версиями.

4)Одна и так же версия компилятора, с одинаковым makefile порождает библиотеки разного размера, если компилить под Win и под Lin.
Страшно брать и линковать с разных мест сборки, но вроде работает.
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39390721
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl1)Полный бордель внутри каталога gcc
И? Кто тебе виноват, что ты используешь кривую и неродную систему, с оберточным костылем?
Пересаживайся на Linux, где gcc мейснтрим, там будет тебе феншуй по полной

Siemargl2)
Windows Windows Windows


Siemargl3)Статическая сборка как минимум под Windows потребует
Ну что за детский сад, штаны на лямках!

Под Windows есть clang/C2 в составе MS VS 2015, если так уж сильно хочется последних C++ ништяков.

Какой смысл сидеть и колоться об реально никем не поддерживамую платформу?

Siemargl4)Одна и так же версия компилятора, с одинаковым makefile порождает библиотеки разного размера, если компилить под Win и под Lin.
Страшно брать и линковать с разных мест сборки, но вроде работает.

Вообще жесть. Ты поди и про отличия в ABI еще не почитал нигде?
https://en.wikipedia.org/wiki/X86_calling_conventions#x86-64_calling_conventions

Ах ну да, про XMM регистры было зачтено за бред, я забыл :):)

Может стоит в Java мир уйти, там-то ничего не отличается?
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39391124
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatch ...

Коллега dbpatch суров, но справедлив...
:-)
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39391126
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно, весть же топик не совсем про GCC, а про его порт на Win, именуемый MinGW, так ?
Мы должны это подчеркнуть!
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39391203
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatchSiemargl1)Полный бордель внутри каталога gcc
И? Кто тебе виноват, что ты используешь кривую и неродную систему, с оберточным костылем?
Пересаживайся на Linux, где gcc мейснтрим, там будет тебе феншуй по полнойНесмотря на то, что я в 96% случаев пользуюсь MingGW, вполне в состоянии посмотреть и в "родной" системе (под рукой Ubuntu14):
include находим в /usr/include, но
часть лежит в /usr/lib/gcc/x86_64-linux-gnu/4.8/include
бинарники лежат в /usr/bin, но
cc1 и cc1plus лежит в /usr/lib/gcc/x86_64-linux-gnu/4.8/

Практически такой же бардак (только либы (.a) вместе лежат, что впрочем (2) лечит)
dbpatchSiemargl3)Статическая сборка как минимум под Windows потребует
Ну что за детский сад, штаны на лямках!

Под Windows есть clang/C2 в составе MS VS 2015, если так уж сильно хочется последних C++ ништяков.

Какой смысл сидеть и колоться об реально никем не поддерживаемую платформу?Ага, Clang под Windows только вышел, никем не используется (а еще он в CBuilder10 есть).
И уровень поддержки там отличается от gcc. /sarcasm

Кроме того, я часто пользуюсь кросс-компилятором, где выбора у меня просто нет.
dbpatchSiemargl4)Одна и так же версия компилятора, с одинаковым makefile порождает библиотеки разного размера, если компилить под Win и под Lin.
Страшно брать и линковать с разных мест сборки, но вроде работает.

Вообще жесть. Ты поди и про отличия в ABI еще не почитал нигде?
https://en.wikipedia.org/wiki/X86_calling_conventions#x86-64_calling_conventions

Ах ну да, про XMM регистры было зачтено за бред, я забыл :):)ABI тут ни при чем, целевой таргет одинаковый, как и версии компилятора.

Про XMM в привязке к передаче параметров-структур и действительно бред.
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39391479
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargldbpatchпропущено...

И? Кто тебе виноват, что ты используешь кривую и неродную систему, с оберточным костылем?
Пересаживайся на Linux, где gcc мейснтрим, там будет тебе феншуй по полнойНесмотря на то, что я в 96% случаев пользуюсь MingGW, вполне в состоянии посмотреть и в "родной" системе (под рукой Ubuntu14):
include находим в /usr/include, но
часть лежит в /usr/lib/gcc/x86_64-linux-gnu/4.8/include
бинарники лежат в /usr/bin, но
cc1 и cc1plus лежит в /usr/lib/gcc/x86_64-linux-gnu/4.8/
И? у тебя в системе может стоять одновременно и 4.8, и 5.3.

Как нужно разделять, озвучишь?

И тебя что, заставляют в makefile эти пути вручную прописывать? Да неужели?

SiemarglАга, Clang под Windows только вышел, никем не используется (а еще он в CBuilder10 есть).
И уровень поддержки там отличается от gcc. /sarcasm
где там? в clang или msvc?

насколько я знаю, в ms поддержка очень оперативная, с ними реально приятно работать


SiemarglКроме того, я часто пользуюсь кросс-компилятором, где выбора у меня просто нет.
тем более странно сидеть под виндой. кто мешает взгромоздить актуальный linux в одну из систем виртуализации?
там даже есть интеграция с visual studio, есть плагин соотвествующий (вернее пара - свой и wingdb) - сидишь в нормальной IDE
отлаживаешь линукс процессы, красота


SiemarglПро XMM в привязке к передаче параметров-структур и действительно бред.
Нет не бред, структура (не указатель, а структура целиком) длиной до 16 байт при передаче упаковывается в 128 битный регистр, известный факт-фича.

Но ты тогда не смог пояснить, что передаешь именно указатель, и кто тебе виноват?
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39391491
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglABI тут ни при чем, целевой таргет одинаковый, как и версии компилятора.

про кросскомпиляцию ты ничего не говорил, тут за тебя всегда должны догадываться?

а так, в мире существует еще и link time optimization, версии линкера тоже одинаковые, и у компиляторов, прям тютелька в тютельку, и номера релизов вплоть до номеров ревизий совпадают и собраны они из единого репозитория?
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39391520
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbpatch,

Читать ты не умеешь, по делу сказать тоже не можешь. Так что отвечать тебе смысла не вижу.
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39391534
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, не уточнил.

Весь этот файловый бардак обычно не заметен.

Пока не нужно использовать -nostdlib, который используется в основном при кросс-компиляции.
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39391787
Common Lisp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl include находим в /usr/include, но
часть лежит в /usr/lib/gcc/x86_64-linux-gnu/4.8/include
И у этого есть очень простое объяснение.
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39391789
Common Lisp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyКакая из f будет взята четко определено.
А какая будет weak где определено?
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39391904
dbpatch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargldbpatch,

Читать ты не умеешь, по делу сказать тоже не можешь. Так что отвечать тебе смысла не вижу.

ты плакал что размеры бинариков собранные отличаются при кросскомпиляции (как мы выяснили потом) под разными хост платформами.

тебе задали простой вопрос - совпадают ли версии компилятора и линкера. и библиотек (код из статичных библиотек очень даже может инлайниться).

и знаешь ли ты про LTO

вместо этого ты развесил обиженно губы, аки девочка какая-то.

видно ты и про LTO не в курсе, и как версии срававать - тоже не знаешь. смешно, кисо обиделось.
...
Рейтинг: 0 / 0
Как я люблю gcc
    #39405253
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Следующее чудо - не gcc, но друг его GNU make. Перестал собираться элементарный пример.

Возможно, сменилась версия make c 3.82 на 3.82.90, но не факт, что это причина

Перестало подхватываться правило (а работало раньше)
Код: plaintext
1.
2.
%.o:%.c $(SOURCES)
	$(CC) $(CFLAGS) $(INCLUDES) -o $@ $<


Причем, в make есть builtin правила - и оно подхватывает CFLAGS, но не INCLUDES, так что выглядело очень похоже на верную строку.
<tab> имеется
...
Рейтинг: 0 / 0
25 сообщений из 66, страница 2 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как я люблю gcc
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]