|
120 / 4 / 1
Регистрация: 15.06.2016
Сообщений: 236
|
|
Компиляция *.cpp компилятором gcc30.12.2018, 01:23. Показов 4834. Ответов 31
Метки нет (Все метки)
Недавно столкнулся с проблемой отсутствия библиотеки libgcc_s_dw2-1.dll (виртуалка с чистой виндой). Начал копаться и обнаружил, что , эта проблема свойственна только x86 компилятору(я использую mingw-w64). Файл, скомпилированный при помощи x64 компилятора(тож mingw-w64) запускается на ура. Что еще более странно, это,что если скомпилировать исходники компилятором gcc x86, а не g++ x86(пишу на плюсах), то ошибка пропадает. Пишу, чтобы вы помогли разобраться в этих аномалиях.Не люблю, когда что-то недопонимаю
0
|
|
| 30.12.2018, 01:23 | |
|
Ответы с готовыми решениями:
31
После установки Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe дает ошибку Exception elinifileexpectation in module devcpp․exe Компиляция проекта в gcc Непонятные проблемы с компилятором gcc |
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
||
| 08.01.2019, 02:48 | ||
|
Добавлено через 52 секунды Ну что, вы сделали какие-либо выводы из того, что вам написали?
1
|
||
|
120 / 4 / 1
Регистрация: 15.06.2016
Сообщений: 236
|
|
| 09.01.2019, 00:35 [ТС] | |
|
Ну это понятно, на основной вопрос ответа я все же не нашел: почему нет ошибки отсутствия либы при запуске программы, скомпилированный через gcc. Если скомпилировать тот же код используя g++, ошибка появляется, да и размер файла увеличивается. Посмотрите в архиве выше, попробуйте запустить каждый файл на чистой системе, вы сами поймёте
Добавлено через 2 минуты Реальной проблемы как таковой нету, я могу и собирать свои проекты используя gcc, просто хочется понять что к чему, почему так происходит.., ну вы поняли
0
|
|
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
||
| 09.01.2019, 11:35 | ||
|
Краткий ответ такой: "потому что gcc не запускает линкер с указанием библиотеки c++-runtime.". G++ предназначен для сборки С++ и делает некоторую дополнительную работу по умолчанию, характерную для С++. Предполагается, что типичная программа на С++ таки зависит от С++ Runtime и поэтому линковщику дается указание подключить ее по умолчанию. GCC таких предположений не делает, т.к. это централизованный механизм, который может запускать сборку на любом языке из доступных в Compiler Collection. Если бы вы использовали код, который зависит от с++ runtime, наподобие того, что предложили вам выше, то вы увидели бы ошибку линкера при попытке собрать код через gcc. Если вы ее не увидели, то ваш код на самом деле не требует зависимости от libstdc++, и сборка его через gcc, а не g++ ни к чему плохому не приводит, а похоже наоборот, даже улучшает состояние дел
1
|
||
|
120 / 4 / 1
Регистрация: 15.06.2016
Сообщений: 236
|
||
| 09.01.2019, 16:42 [ТС] | ||
|
Добавлено через 4 минуты И почему файлы, скомпилированные g++(x64), в отличие от g++(x86) запускаются без ошибок?
0
|
||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|||||
| 09.01.2019, 18:37 | |||||
|
Вы же должны понимать, что отсюда совсем не понятно что и как вы запускаете. Приведите логи, подробные, я вам все там объясню. Добавлено через 4 минуты Да, и код, который вы дали в #14 совершенно справедливо не нуждается в libstdc++, т.к. использует только вызовы из С runtime. Добавлено через 4 минуты Увеличение размера исполняемого файла при увеличении кол-ва зависимостей - это вполне закономерное явление. Т.к. список зависимостей хранится в специальных таблицах внутри исполняемого файла. Также флаги линковщика могут быть различными (опять же смотрите результат работы с опцией -v), что побуждает его генерировать какой-то дополнительный код. Добавлено через 7 минут GreyCat, я посмотрел ваш архив выше, и похоже что версия которую вы назвали gcc(x64)_with_-lstdc++.exe совсем не тащит libstdc++. Т.е. так, как будто ее и не указывали вовсе. По всей видимости умный линковщик просто проигнорировал ваше пожелание линковать бесполезную библиотеку. Вот и ответ, похоже.
1
|
|||||
|
120 / 4 / 1
Регистрация: 15.06.2016
Сообщений: 236
|
|||||||||||||
| 09.01.2019, 21:20 [ТС] | |||||||||||||
|
Лог компиляции gcc(x86):
0
|
|||||||||||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|||
| 09.01.2019, 21:36 | |||
-lstdc++ -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrt -lpthread -ladvapi32 -lshell32 -luser32 -lkernel32 -liconv -lmingw32 -lgcc_s -lgcc -lmoldname -lmingwex -lmsvcrtТут есть и stdc++ и gcc_s
1
|
|||
|
120 / 4 / 1
Регистрация: 15.06.2016
Сообщений: 236
|
||||||||||||
| 09.01.2019, 21:54 [ТС] | ||||||||||||
|
оу, щит, прошу извинить и принять новый вариант
Лог g++(x86):
А есть опция отключения этого -lstdc++? Или проще компилировать, используя gcc?
0
|
||||||||||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
|||
| 09.01.2019, 23:06 | |||
-nostdlib: https://gcc.gnu.org/onlinedocs... tions.htmlДобавлено через 3 минуты X64 окружение похоже чуть поумнее, и игнорирует ненужную зависимость при линковке.
1
|
|||
|
120 / 4 / 1
Регистрация: 15.06.2016
Сообщений: 236
|
|||||||||||
| 10.01.2019, 00:02 [ТС] | |||||||||||
|
Компилирую так:
0
|
|||||||||||
|
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
|
||
| 10.01.2019, 00:13 | ||
|
Но похоже для mingw -nostdlib более фатально, т.к. отключает всю обвязку, которой довольно много. Наверное все-таки лучше вам не пользоваться ей в mingw
1
|
||
|
120 / 4 / 1
Регистрация: 15.06.2016
Сообщений: 236
|
||||||
| 10.01.2019, 00:17 [ТС] | ||||||
![]() gcc и все) Главное я понял что к чему) Спасибо всем участникам)
0
|
||||||
| 10.01.2019, 00:17 | |
|
Учим code::blocks компилировать gcc компилятором как скомпилировать исходник на Python компилятором gcc? Как записать компиляцию файла С в cgi компилятором gcc? Можно ли компилятором gcc создать COM объекты, сервер, в частности? Как осуществляется компиляция и компоновка программы со строковым компилятором? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|