как собрать плагины с помощью gcc из mingw?

Место, где разработчики плагинов могут поделиться своим опытом.
2useven10
Posts: 5210
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Собрать Far самому

Post by 2useven10 »

Latest post of the previous page:

добавить флаги линкера: -static-libgcc -static
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Собрать Far самому

Post by John Doe »

А куда это можно добавить, чтобы не приходилось дублировать в каждом Makefile?
2useven10
Posts: 5210
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Собрать Far самому

Post by 2useven10 »

Боюсь это зависит от системы сборки каждого бинарника...
Универсального ответа не знаю.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Собрать Far самому

Post by John Doe »

Если взять gcc не с mingwbuilds, а из других источников (например), то libgcc линкуется статически и без дополнительных флагов, вот я и подумал что может быть они указываются где-то глобально.
Но это не особо важно.

А другой вопрос: как минимизировать размер получившегося dll/exe?
Например lua.exe, собранный с немодифицированным makefile, занимает 40 Кб
Тот же lua.exec farmanager.svn - 13 Кб.
Это не случайность, такая же картина с прочими "собственноручно" собранными dll/exe

Я понимаю что это вопрос чайника, и простого ответа скорее всего нет, но вдруг есть общие рекомендации
2useven10
Posts: 5210
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Собрать Far самому

Post by 2useven10 »

для начала можно поставить оптимизацию кода по размеру (-Os) и линкеру опцию strip (-s).
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Собрать Far самому

Post by John Doe »

Попробовал собрать что-то простое
lcl.o - 3645
cl.dll - 37888, т.е. в 10 раз больше.

2useven10
Posts: 5210
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Собрать Far самому

Post by 2useven10 »

вполне приемлемо. у меня с -Os (и возможно другой версией компилятора) - 35к.
сравнимо с luamacro.dll, собственного кода и там и там немного, используемая библиотека одна.
User avatar
DrKnS
Posts: 6114
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 12 times
Been thanked: 426 times

Re: Собрать Far самому

Post by DrKnS »

John Doe wrote:как минимизировать размер получившегося dll/exe?
...
Я понимаю что это вопрос чайника, и простого ответа скорее всего нет, но вдруг есть общие рекомендации
Общая рекомендация — не заниматься подобными глупостями.
2useven10
Posts: 5210
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 310 times

Re: Собрать Far самому

Post by 2useven10 »

Общая рекомендация — не заниматься подобными глупостями.
Каждый выбирает себе глупости сам. :popcorn:
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Собрать Far самому

Post by Shmuel »

GCC-7.1
cl.dll - 11264
luamacro.dll - 11776
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Собрать Far самому

Post by John Doe »

А LuaMacro.dll в дистрибутиве 38912.
Лишние 30 Кб это конечно ерунда, но спортивный интерес присутствует.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Собрать Far самому

Post by Shmuel »

luamacro.dll и luafar3.dll в дистрибутиве собираются Visual Studio, статически, чтобы избежать зависимости от редистрибутивов Майкрософта. А цифры, приведенные мной, это "динамическая" сборка (то-есть присутствует зависимость от msvcrt.dll).
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Собрать Far самому

Post by John Doe »

Понятно.
Но cl.dll и lua.exe, собранные gcc 4.8, всё равно на 25 Кб больше чем ваши, хотя тоже зависят от msvcrt.dll
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Собрать Far самому

Post by Shmuel »

John Doe wrote:Но cl.dll и lua.exe, собранные gcc 4.8, всё равно на 25 Кб больше чем ваши, хотя тоже зависят от msvcrt.dll
Это зависит от опций компиляции и линковки. Может зависеть также от опций сборки самой GCC.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Re: Собрать Far самому

Post by John Doe »

Если использовать один makefile, то и опции должны совпадать.
Так что скорее дело в опциях сборки GCC.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

Re: Собрать Far самому

Post by Shmuel »

Вот как примерно выглядят мои мейкфайлы для сборки Lua-библиотек:

Code: Select all

PROJECT = cl
OBJ = lcl.o

include $(PATH_SYSTEM)/_mingw.mak
Сейчас из спортивного интереса скачал gcc 4.8 c http://nuwen.net/
cl.dll - 12800 байт.
Post Reply

Return to “Разработка плагинов”