Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Клуб программистов. | страница 9
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 9 из 9
На страницу: Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9 | Все страницы
Поиск в этой теме:
Железный канал: «Клуб программистов.»
Progressor
 140 EGP


Рейтинг канала: 3(26)
Репутация: 32
Сообщения: 221
Откуда: Border worlds
Зарегистрирован: 28.03.2005
ух ты_живые пилоты и срутся еще )
0111010011, программирование, как вдох_выдох, как азбука Морзе...
_________________
.::||::.
    Добавлено: 11:02 05-01-2025   
Dimaxx
 1016 EGP


Рейтинг канала: 8(898)
Репутация: 204
Сообщения: 5811
Откуда: Северодвинск
Зарегистрирован: 26.06.2002
Раз тут клуб погромистов, то спрошу тут.

Есть либа libwebp. Компилю исходники с помощью msys2+gcc. Сама либа собирается на ура, НО! Она тянет за собой libgcc и тут же собираемую libsharpyuv (юзается вроде как энкодером). От libgcc избавился с помощью -static-libgcc, но от второй избавиться не могу - она упорно лезет в зависимости и без нее libwebp.dll не грузится, а тащить кучу говна не хочу (мне и от libwebp нужно только декодирование). Удалить ее нельзя - перестанет собираться основная либа. После компиляции остается куча объектников - сама libwebpdecode не собирается, хотя для нее все есть. Как собрать из объектников либу? Или как избавиться от зависимости libsharpyuv?
_________________
"Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс
    Добавлено: 19:23 05-01-2025   
Voha
 942 EGP


Модератор
Рейтинг канала: 9(1062)
Репутация: 169
Сообщения: 4977
Откуда: Moscow, Russia
Зарегистрирован: 15.02.2001
Dimaxx :
Или как избавиться от зависимости libsharpyuv?
А цель какая - получить герметичную сборку без динамических библиотек или именно лишние зависимости спилить? Если конечный объект либа - то без выпиливания из сорсов лишнего скорей всего не получится, линкер будет собирать всё объявленное, мало ли какие объекты потребует ссылающийся на либу. Если герметичный бинарь, то в теории статическая линковка должна будет притащить только необходимые функции из всех зависимых библиотек.

добавлено спустя 24 минуты:
STinger :
Voha :
Продвинутый разработчик может и несколько сотен строк написать без тестовых запусков в процессе.

Такие люди наверняка есть, но врядли их большинство. Мне это точно не подходит, так как у меня плохая память, и я работаю всегда исходя из этого - если я забыл как что-то работает, то тут же тестовые запуски с логами в консоль мне всё освежат.
Ещё у некоторых видел тесты прям в VS Code: написал что-то, нажал кнопку, прогнались тесты.
Таких людей не просто большинство, их среди разработчиков подавляющее большинство.
STinger :
Voha :
Довольно часто на собесах нужно "на листочке" (т.е. без IDE и попыток компиляции) написать код

В определённых кругах это считается лютым неадекватингом, и такие конторы избегают Улыбка
Давай попробуем перечислить эти неадекватные конторы? Гугл, фэйсбук, алибаба, амазон, нетфликс, букинг, MS - из известных мне мирового уровня. Озон, яндекс, сбедевайсез, мтс диджитал, ВБ, касперский - из известных мне российских. Про ХФТ-конторы я особо не в курсе, это не оч понятный для меня мир, но с точки зрения логики требования задрачивания кода на скорость выполнения приведут именно к "олимпиадным" задачкам на входе. Зарплат на рынке пока определяют вышеперечисленные, безотносительно мнения об их адкватности в определенных кругах Подмигиваю
Научить человека решать реальные рабочие задачи сильно проще, чем дать ему базу по алгоритмам, сисдизу, стройству платформ и и т.п.
STinger :
Так как это не имеет отношения к решению реальных рабочих задач, в условиях постоянного наличия гугла под рукой. Человек может иметь огромный опыт по решению очень сложных задач, но просто не любит полагаться на свою память. И на таком собесе может забыть какую-нить базовую мелочь, потому что привык всегда в такие моменты залезать в гугл или документацию. А тут нельзя даже IDE заюзать.
Это просто любимое Улыбка Даешь такому человеку реальную рабочую задачу - приложение в проде падет в корку, нужно чинить. А он даже корку в gdb без гугла не может загрузить.
"Базовые мелочи" у профессионала работают рефлекторно, гугл для этого не нужен. И значимая доля таких "мелочей" сейчас автоматично пишется gpt-моделями - в смысле "человек с огромным опытом" для этого уже перестал быть нужен.
_________________
Time will show...

Последний раз редактировалось: Voha (20:22 06-01-2025), всего редактировалось 1 раз
    Добавлено: 20:22 06-01-2025   
Dimaxx
 1016 EGP


Рейтинг канала: 8(898)
Репутация: 204
Сообщения: 5811
Откуда: Северодвинск
Зарегистрирован: 26.06.2002
Voha :
получить герметичную сборку без динамических библиотек

Сборку без доп. либ. В идеале собрать только декодер. Я собрал из сорцов dll декодера, либа вышла маленькая, но что-то в ней не так - одна из подготовительных функций возвращает ошибку. Собрал из тех же сорцов exe - та же картинка нормально декодируется, но она же в либе - ошибка. И я хз где и в чем затык.

Еще не могу победить gcc, чтобы он не резал функции на части - -O1 генерит нормальные функции, а -O2/-O3 две - одну с нормальным именем, а вторую имя.part.номер. А нормальная после нескольких инструкций прыгает в part. Раньше эта фигня контролилась опцией -fdisable-ipa-fnsplit, но она была упразднена.
_________________
"Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс

Последний раз редактировалось: Dimaxx (22:44 06-01-2025), всего редактировалось 1 раз
    Добавлено: 22:38 06-01-2025   
Ritchie
 279 EGP


Рейтинг канала: 1(4)
Репутация: 10
Сообщения: 6572

Зарегистрирован: 15.12.2015
Dimaxx :
Раньше эта фигня контролилась опцией -fdisable-ipa-fnsplit, но она была упразднена.
Насколько знаю, но раньше у гсс форков, как нерезаных собак. Может в каком и осталась?
    Добавлено: 00:31 07-01-2025   
Grebomet
 1466 EGP


Модератор
Рейтинг канала: 8(759)
Репутация: 261
Сообщения: 4787
Откуда: Питербурх
Зарегистрирован: 06.01.2003
Dimaxx :
Есть либа libwebp. Компилю исходники с помощью msys2+gcc.

А почему не чем-нибудь более нативным? Msys2 все-таки пытается из винды линукс сделать посредством кучи подпорок и костылей. Не проще той же студией собрать?

Dimaxx :
Сама либа собирается на ура, НО! Она тянет за собой libgcc и тут же собираемую libsharpyuv (юзается вроде как энкодером). От libgcc избавился с помощью -static-libgcc, но от второй избавиться не могу - она упорно лезет в зависимости и без нее libwebp.dll не грузится, а тащить кучу говна не хочу (мне и от libwebp нужно только декодирование).

Чтобы не приходилось таскать за собой кучу DLL, собирай статически.

Dimaxx :
Как собрать из объектников либу?

make libwebpdecode.a
, например...

Dimaxx :
Или как избавиться от зависимости libsharpyuv?

Никак. Я посмотрел в исходники системы сборки - она из libwebp используется.

Dimaxx :
Я собрал из сорцов dll декодера, либа вышла маленькая, но что-то в ней не так - одна из подготовительных функций возвращает ошибку. Собрал из тех же сорцов exe - та же картинка нормально декодируется, но она же в либе - ошибка. И я хз где и в чем затык.

Так тебе просто бинарь декодера надо собрать или подключить библиотеку к своей программе? Если подключить, то собирай ее статически (точнее, обе две - libwebp.lib и ту вторую), а потом линкуйся с ними. Статическая библиотека - это просто архив с объектниками, линкер из него сам выдерет те файлы, в которых лежат используемые функции.

Dimaxx :
Еще не могу победить gcc, чтобы он не резал функции на части - -O1 генерит нормальные функции, а -O2/-O3 две - одну с нормальным именем, а вторую имя.part.номер. А нормальная после нескольких инструкций прыгает в part. Раньше эта фигня контролилась опцией -fdisable-ipa-fnsplit, но она была упразднена.

Зачем ты это хочешь победить? Это часть оптимизаций.
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 01:23 18-01-2025   
Dimaxx
 1016 EGP


Рейтинг канала: 8(898)
Репутация: 204
Сообщения: 5811
Откуда: Северодвинск
Зарегистрирован: 26.06.2002
Grebomet :
Чтобы не приходилось таскать за собой кучу DLL, собирай статически.

Как?

Grebomet :
make libwebpdecode.a

make: *** No rule to make target 'libwebpdecode.a'. Stop.

Grebomet :
Так тебе просто бинарь декодера надо собрать

Да. И потом использовать с другим приложением.

Grebomet :
Зачем ты это хочешь победить? Это часть оптимизаций.

Мне еще нужен код на асме. Я могу, конечно, соединить обе функции, но это все руками.
_________________
"Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс

Последний раз редактировалось: Dimaxx (11:33 20-01-2025), всего редактировалось 1 раз
    Добавлено: 21:12 19-01-2025   
Grebomet
 1466 EGP


Модератор
Рейтинг канала: 8(759)
Репутация: 261
Сообщения: 4787
Откуда: Питербурх
Зарегистрирован: 06.01.2003
Dimaxx :
Как?

Ну я собирал через CMake - там это делается через переменную WEBP_LINK_STATIC=On. По идее в конфигуре тоже что-то такое же можно задать. Теоретически - через --disable-shared --enable-static.

Dimaxx :
make: *** No rule to make target 'libwebpdecode.a'. Stop.

Я в последний раз msys лет десять назад трогал палочкой, поэтому не уверен, какие он расширения использует. Попробуй make libwebpdecode.lib.
А вообще она тебе точно нужна? Я собрал под виндой dwebp.exe статически - ему только вот эти библиотеки понадобились:
libexampleutil.lib libimagedec.lib libimageenc.lib libimageioutil.lib libsharpyuv.lib libwebp.lib libwebpdemux.lib

Dimaxx :
Да. И потом использовать с другим приложением.

Ну хошь я тебе его пришлю. Улыбка 1,6 Мб сам бинарь и к нему еще 9,6 Мб отладочных символов в .pdb-шке.

Dimaxx :
Мне еще нужен код на асме. Я могу, конечно, соединить обе функции, но это все руками.

Охоспаде, а асм-то тебе зачем?

dwebp.rar
 Описание:
 Имя файла:  dwebp.rar
 Размер файла:  1.54 MB
 Скачано:  17 раз(а)

_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.

Последний раз редактировалось: Grebomet (15:18 20-01-2025), всего редактировалось 1 раз
    Добавлено: 15:15 20-01-2025   
Dimaxx
 1016 EGP


Рейтинг канала: 8(898)
Репутация: 204
Сообщения: 5811
Откуда: Северодвинск
Зарегистрирован: 26.06.2002
Grebomet :
Теоретически - через --disable-shared --enable-static

Пробовал - не канает, либа не собирается.

Grebomet :
Ну хошь я тебе его пришлю. Улыбка 1,6 Мб сам бинарь

Я хочу сам собрать, готовое в инете валяется, правда 1.4 версия. Ну и плюс 1.6 мега слишком пухло - у меня прога 200кб. Я собрал с вырезанием всего лишнего 120кб либу. Убрал все extern - один черт половина функций лезет в экспорт.

Grebomet :
Охоспаде, а асм-то тебе зачем?

У меня свои тараканы. Я его, кстати, активно использую в критически важных местах.
_________________
"Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс
    Добавлено: 20:17 20-01-2025   
Grebomet
 1466 EGP


Модератор
Рейтинг канала: 8(759)
Репутация: 261
Сообщения: 4787
Откуда: Питербурх
Зарегистрирован: 06.01.2003
Dimaxx :
Ну и плюс 1.6 мега слишком пухло - у меня прога 200кб.

Я ее с рантаймом статическим собрал, а то бы просила какой-нибудь vcrt432.dll (и не один). Этот рантайм сам килобайт 200 накидывает сразу.

Dimaxx :
Убрал все extern - один черт половина функций лезет в экспорт.

Шо?! Ух ты!..
А зачем тебе библиотека, из которой не торчат наружу символы?
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 22:22 20-01-2025   
Dimaxx
 1016 EGP


Рейтинг канала: 8(898)
Репутация: 204
Сообщения: 5811
Откуда: Северодвинск
Зарегистрирован: 26.06.2002
Слегка перелопатил декодер, выкинул все ненужное и собрал либу. Завтра опробую.

Grebomet :
А зачем тебе библиотека, из которой не торчат наружу символы?

Убрал не все, как оказалось. Там мое должно торчать, а не вся подноготная декодера. Вот я и дописал. Теперь торчит только мое написанное. Что и хотел.
_________________
"Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс
    Добавлено: 01:05 21-01-2025   
Dimaxx
 1016 EGP


Рейтинг канала: 8(898)
Репутация: 204
Сообщения: 5811
Откуда: Северодвинск
Зарегистрирован: 26.06.2002
Вдогонку еще вопрос. Как перед конфигурацией/сборкой добавить доп. опции компиляции? Мб ключ какой у configure/make?
_________________
"Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс
    Добавлено: 09:53 21-01-2025   
Grebomet
 1466 EGP


Модератор
Рейтинг канала: 8(759)
Репутация: 261
Сообщения: 4787
Откуда: Питербурх
Зарегистрирован: 06.01.2003
Dimaxx :
Мб ключ какой у configure/make?

Переменные окружения CFLAGS/CXXFLAGS/LDFLAGS выставить перед сборкой.
Ну и посмотреть на выхлоп ./configure --help Хы...
_________________
Классическая ошибка, которую совершают проектировщики абсолютно надежных систем, – недооценка изобретательности клинических идиотов.
    Добавлено: 14:59 21-01-2025   
Dimaxx
 1016 EGP


Рейтинг канала: 8(898)
Репутация: 204
Сообщения: 5811
Откуда: Северодвинск
Зарегистрирован: 26.06.2002
Опция CFLAGS="список" заменяет предопределенное или дополняет?
_________________
"Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс
    Добавлено: 16:42 21-01-2025   
Voha
 942 EGP


Модератор
Рейтинг канала: 9(1062)
Репутация: 169
Сообщения: 4977
Откуда: Moscow, Russia
Зарегистрирован: 15.02.2001
Dimaxx :
Опция CFLAGS="список" заменяет предопределенное или дополняет?
Зависит от того, что в мэйк-файле/конфигуре написано. Обычно все (из окружения, из строки запуска и собственно из файла) сгребаются в кучу, но бывают нюансы с порядком сгребания, дефолтами и "угадайками" от конфигуре типа "если установлены X и Y, то я вот еще Z поставлю".
_________________
Time will show...
    Добавлено: 11:41 22-01-2025   
Dimaxx
 1016 EGP


Рейтинг канала: 8(898)
Репутация: 204
Сообщения: 5811
Откуда: Северодвинск
Зарегистрирован: 26.06.2002
Кароче пробовать надо и смотреть результат, а потом заново сконфигурить уже с учетом результата.
_________________
"Если мы не покончим с войной, война покончит с нами." Г. Г. Уэллс
    Добавлено: 00:39 23-01-2025   
Железный канал: «Клуб программистов.»
На страницу: Пред.  1, 2, 3, 4, 5, 6, 7, 8, 9 | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Не задолбало клавиатурной мастурбацией занимацца? (NRG)

  » Клуб программистов. | страница 9
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18