metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2016-04-10 05:03 pm

ANSI C и зависимости

А вот как в сишечьке принято втаскивать сторонние либы в зависимости?

Например, мне нужна структура типа паскалевских строк - т.е. буфер, размер и capacity.
Делать самому - очевидный грех, брать готовое - так у половины сторонних либ самодельные аналоги, а из готового обычно какой-нибудь нечеловеческий трэш вроде GLib, который под винду еще просто так и не соберешь.

[identity profile] berezovsky.livejournal.com 2016-04-10 02:20 pm (UTC)(link)
Ну да, но что поделаешь? Есть куча компиляторов которые умеют только ANSI C. Я на работе каждый день слежу за тем, чтобы код был согласно POSIX-2001. Я вживую в 2016 году в билд энваерменте интеля видел ошибки в GNU awk и GNU Make которые были пофикшены в 2003 и 2007 годах соответственно

Это juick.com/Kim, можешь у него спросить.

[identity profile] rhxca.livejournal.com 2016-04-11 12:00 pm (UTC)(link)
квантовый дурачок Березовский, ты уже поиграл со своей мамой в пирамидки и кубики?

[identity profile] berezovsky.livejournal.com 2016-04-12 11:08 pm (UTC)(link)
Во, он ответил.

А вообще там всё просто. Если нужно реализацию чего-нибудь большого, вроде работы с графикой, с сетью, с базами данных и того подобного, то берутся просто соответствующие либы и подключаются с использованием pkgconfig (или его обёртки из autoconf/cmake/etc). Если нужно чего-то маленьго, вроде хэшей, контейнеров или , то можно либо смотреть на ccan или gnulib на предмет наличия готовой реализации (впрочем иногда даже тут бывают вещи вроде sglib или libav которые можно взять либой, но уже реже) и при отсутствии таковой писать самостоятельно, либо брать монструозные вещи вроде glib.

А вообще если такой вопрос возник, то возможно вы уже вышли из того списка задач для которого C круче всех и стоит взять язык в котором стандартные библиотеки умеют все базовые вещи: плюсы, питон, хаскель, джаваскрипт на ноде и так далее.

Как-то так

Если нужно реализацию чего-нибудь большого, вроде работы с графикой, с сетью, с базами данных и того подобного, то берутся просто соответствующие либы и подключаются с использованием pkgconfig (или его обёртки из autoconf/cmake/etc). Если нужно чего-то маленьго, вроде хэшей, контейнеров или переносимых обёрток на сишные функции, то можно либо смотреть на ccan или gnulib на предмет наличия готовой реализации (впрочем иногда даже тут бывают вещи вроде sglib или libav которые можно взять либой, но уже реже) и при отсутствии таковой писать самостоятельно, либо брать монструозные вещи вроде glib.

А вообще если такой вопрос возник, то возможно вы уже вышли из того списка задач для которого C круче всех и стоит взять язык в котором стандартные библиотеки умеют все базовые вещи: плюсы, питон, хаскель, джаваскрипт на ноде и так далее.

Пофиксил очепятки

[identity profile] kiryl.livejournal.com 2016-04-10 03:13 pm (UTC)(link)
Я б для начала ccan (https://ccodearchive.net/) глянул. Для чего-нить тривиального самое оно.

[identity profile] juan-gandhi.livejournal.com 2016-04-10 03:32 pm (UTC)(link)
Я последнее время обнаруживаю, что в скале проще всего накатать самому, потому что тексты обычно короткие.

[identity profile] binf.livejournal.com 2016-04-10 03:38 pm (UTC)(link)
Делать самому - очевидный грех

вот как раз таки на сях идеоматично такое писать руками, а тащить в виде зависимостей - очевидная содомия

[identity profile] blackyblack.livejournal.com 2016-04-10 06:34 pm (UTC)(link)
Ага. Я в последнее время чаще перетаскиваю проекты на C++ только для того, чтобы проще с зависимостями было и STL для всяких типовых вещей.

[identity profile] max630.livejournal.com 2016-04-10 03:40 pm (UTC)(link)
apt-get install lib***-dev :)

для windows вроде nuget же придумали уже. Вот оттуда и брать.

вообще такая ерунда как строки с известной слиной едва ли существует в виде отдельной библиотеки, как правило это вствоено в более крупные фреймворки или вообще внутренние в каком-нибудь проекте.

[identity profile] metaclass.livejournal.com 2016-04-10 03:45 pm (UTC)(link)
нугет это ж для дотнетов
Еще я опасаюсь, что будет как с тем npm и leftpad.

[identity profile] max630.livejournal.com 2016-04-10 04:06 pm (UTC)(link)
> нугет это ж для дотнетов

не только. Вот например для плюсов: https://www.nuget.org/packages/msgpack-c/
по идее там любой язык сойдёт, это ж просто зип архив

> будет как с тем npm и leftpad

ну вообще можно поднять свой nuget сервер и скопировать туда.
wizzard: (2016-01)

[personal profile] wizzard 2016-04-11 09:23 am (UTC)(link)
нугет в этом смысле чуть более адекватен, но да, package management is hard

[identity profile] kincajou.livejournal.com 2016-04-10 03:43 pm (UTC)(link)
на лиспе надо писать!

[identity profile] hgfd hgfd (from livejournal.com) 2016-04-10 07:55 pm (UTC)(link)
+ Image

[identity profile] vit-r.livejournal.com 2016-04-10 04:44 pm (UTC)(link)
Кошерные библиотеки покупаются. А так - проще писать самому, чем копаться в.

[identity profile] dmytrish.livejournal.com 2016-04-10 06:21 pm (UTC)(link)
Apache Portable Runtime (apr) еще есть, может хоть он соберется под венду.

А так сишечка и зависимости в одном флаконе это чаще всего боль. Чем их меньше, тем лучше.

[identity profile] pupsikk.livejournal.com 2016-04-10 06:39 pm (UTC)(link)
А почему бы не пользоваться фичами Ци++ из Си?
Там есть практически все что нужно - std::string и STL.

[identity profile] berezovsky.livejournal.com 2016-04-10 06:45 pm (UTC)(link)
ПРЕВЕД, ПУПСЕГ

[identity profile] volodymir-k.livejournal.com 2016-04-10 07:48 pm (UTC)(link)
методом гугления в стековерфлоу

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

[identity profile] berezovsky.livejournal.com 2016-04-10 07:59 pm (UTC)(link)
Мне тут рассказали на неделе, что в одну минскую контору маски шоу нагрянули за нелицензионный софт.

[identity profile] volodymir-k.livejournal.com 2016-04-10 09:36 pm (UTC)(link)
который они и написали?

эти -- могут

тем более что надо бюджет наполнять

а может надо было просто наехать на контору

в 1997 в миде я лично ставил прогу на нелицензионную вин 95
Edited 2016-04-10 21:38 (UTC)

[identity profile] berezovsky.livejournal.com 2016-04-10 09:49 pm (UTC)(link)
Кто что может? Тут никогда вроде никого не ебали за софт.

[identity profile] anonim-legion.livejournal.com 2016-04-12 05:13 pm (UTC)(link)
За нарушение GPL нагрянули, что-ли?

Есть Autodesk, Microsoft, Adobe. 1C еще. Вот за софт этих могут и дело завести. До всего остального органам дела нет.

[identity profile] berezovsky.livejournal.com 2016-04-12 05:16 pm (UTC)(link)
Вот мне тоже интересно, к кому и за что. :-)

[identity profile] anonim-legion.livejournal.com 2016-04-12 05:19 pm (UTC)(link)
В одной из контор, где я работал, в отделе техподдержки несколько раз подготавливали сервер для заказчика. С Oracle linux и собственно Ораклом - пиратским, естественно. Шло это все на разные нефтебазы. Если к этим и нагрянут, то пиратский софт явно будет последней претензией из всех.

[identity profile] tzirechnoy.livejournal.com 2016-04-10 09:37 pm (UTC)(link)
CMake'ом или автоконфом.

[identity profile] tzirechnoy.livejournal.com 2016-04-10 09:38 pm (UTC)(link)
Ну, то есть сначала это pkg-config, а потом...

[identity profile] narmaru.livejournal.com 2016-04-10 09:47 pm (UTC)(link)
https://github.com/antirez/sds жеж

[identity profile] rhxca.livejournal.com 2016-04-11 12:02 pm (UTC)(link)
метакласс, когда ты убьёшь всех ёбаных пирадасов програмистов?

[identity profile] cottidianus.livejournal.com 2016-04-16 09:40 pm (UTC)(link)
М, apt-get install glib-dev
а пользователи виндовс должны страдать - их пользоваться виндовс никто не заставлял

[identity profile] cottidianus.livejournal.com 2016-04-16 09:43 pm (UTC)(link)
Срсли, у нас есть специальный репозиторий, где свалка собранных статик либ для венты. Как и из каких исходников это собиралось - не знает никто кроме того кто собирал. А он забыл через месяц после коммита.
Ну а статик линкадж - это так вентузятники решают вопрос с дистрибьюцией.

И я не знаю что посоветовать и не вижу как сделать хорошо в этой, бля, операционке
Edited 2016-04-16 21:48 (UTC)

[identity profile] metaclass.livejournal.com 2016-04-16 11:30 pm (UTC)(link)
Кстати, под виндой со сборкой не так страшно все - особенно если сразу задаться целью "повторяемая сборка на отдельной машине да с тестами".