Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ambrosia
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 14
#1

Как выполнить статическую линковку библиотек? - C++

25.07.2015, 23:18. Просмотров 359. Ответов 9
Метки нет (Все метки)

Такая ситуация: скомпилировал на ноуте консольное приложение, на уровне хеллоу ворлда, а на персональном компе оно при запуске выдает системную ошибку (отсутствие файла libgcc_s_dw2-1.dll), в свою очередь скомпилированное на персональнике выдает ошибку на ноуте (отсутствие файла libgcc_s_seh-1.dll). Как мне произвести статическую линковку библиотек, чтобы я мог без проблем запускать прогу в других системах?

p.S> gcc 5.0.1 (minGW-w64)
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2015, 23:18     Как выполнить статическую линковку библиотек?
Посмотрите здесь:

C++ Как поместить в шаблон статическую переменную?
C++ Не получается сделать статическую линковку своей программы в MinGW
Про линковку и про исключения C++
C++ почему линковщик не видит статическую переменную:
C++ Как создать статическую библиотеку с расширением .lib в MinGw?
Научите собирать статическую библиотеку из исходников C++
Как указать директорию для динамических библиотек C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
25.07.2015, 23:22     Как выполнить статическую линковку библиотек? #2
Как получить готовый .exe файл, чтобы запускать его без IDE
ambrosia
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 14
25.07.2015, 23:29  [ТС]     Как выполнить статическую линковку библиотек? #3
Croessmah, я совсем новичок, да и не IDE у меня, простой компиль.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
25.07.2015, 23:35     Как выполнить статическую линковку библиотек? #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от ambrosia Посмотреть сообщение
я совсем новичок, да и не IDE у меня, простой компиль.
Из консоли компилируете?

g++ -o blablabla.exe somefile.cpp somefile2.cpp -static -static-libgcc -static-libstdc++
ambrosia
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 14
25.07.2015, 23:45  [ТС]     Как выполнить статическую линковку библиотек? #5
Croessmah, да, из консоли. Файл скомпилировался, в другой системе запускается и выполняется успешно, без ошибок.

Получилась такая вот строка g++ -std=c++11 -o final.exe 866OEM.cpp -static -static-libgcc -static-libstdc++
Ничего лишнего? И если можно, разъясните пожалуйста по каждому параметру в этой строке.
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
26.07.2015, 00:07     Как выполнить статическую линковку библиотек? #6
Цитата Сообщение от ambrosia Посмотреть сообщение
-std=c++11
Использовать стандарт c++11
Цитата Сообщение от ambrosia Посмотреть сообщение
-o final.exe
-o - output. На выходе получим файл final.exe
Цитата Сообщение от ambrosia Посмотреть сообщение
866OEM.cpp
собственно файлы с исходниками
Цитата Сообщение от ambrosia Посмотреть сообщение
-static -static-libgcc -static-libstdc++
-static - компоновщик будет игнорировать любые разделяемые библиотеки и разрешать все внешние ссылки непосредственным включением в вырабатываемый объектный код статических объектных файлов.
-static-libgcc - назначает использование статической версии библиотеки libgcc. Применение этой опции может создать проблемы с обработкой исключений при компиляции программ на языке c++
-static-libstdc++ - тоже самое, только для libstdc++
castaway
Эксперт С++
4870 / 3009 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
26.07.2015, 08:56     Как выполнить статическую линковку библиотек? #7
Достаточно одного флага -static.
ambrosia
0 / 0 / 0
Регистрация: 04.07.2015
Сообщений: 14
26.07.2015, 09:00  [ТС]     Как выполнить статическую линковку библиотек? #8
Croessmah, а не подскажете, в какой литературе можно подробнее узнать о линковке?
Croessmah
Модератор
Эксперт CЭксперт С++
 Аватар для Croessmah
12534 / 7096 / 797
Регистрация: 27.09.2012
Сообщений: 17,508
Записей в блоге: 2
Завершенные тесты: 1
26.07.2015, 15:39     Как выполнить статическую линковку библиотек? #9
Цитата Сообщение от ambrosia Посмотреть сообщение
а не подскажете, в какой литературе можно подробнее узнать о линковке?
C++. Сборник рецептов. ;-) знакомо, да?
GCC - полное руководство (там вообще всё есть)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2015, 16:17     Как выполнить статическую линковку библиотек?
Еще ссылки по теме:

Указать параметром шаблона статическую матрицу C++
Как узнать частоту звука без сторонних библиотек C++
C++ Создать статическую библиотеку к программе
Функция содержащая статическую переменную C++
Как в данном контексте правильно разместить статическую локальную переменную? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ct0r
Игогошка!
 Аватар для ct0r
1682 / 608 / 41
Регистрация: 19.08.2012
Сообщений: 1,224
Завершенные тесты: 1
26.07.2015, 16:17     Как выполнить статическую линковку библиотек? #10
Цитата Сообщение от ambrosia Посмотреть сообщение
а не подскажете, в какой литературе можно подробнее узнать о линковке?
http://www.amazon.com/Advanced-C-Com.../dp/1430266678
Как обычно, бесплатную версию можно найти в интернете.
Yandex
Объявления
26.07.2015, 16:17     Как выполнить статическую линковку библиотек?
Ответ Создать тему
Опции темы

Текущее время: 09:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru