Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>А там в чем проблема? Если библиотека распространяется только в двоичном виде, то к целевой платформе ее не присобачить никак. Если же в исходниках, то какая разница, где ее компилить/собирать — на целевой платформе, или на рабочей? Здесь я тоже вижу проблему лишь в том случае, когда целевая платформа обкатана, широко используется и имеет развитый набор средств для компиляции/сборки, а та платформа, на которой вдруг приспичило собрать, имеет лишь какой-то урезанный набор. Но тогда возникает вопрос — откуда вообще взялась идея собирать не на целевой?
Библиотеки в исходникам. Прежде, чем их собрать, их нужно сконфигурировать. Обычно конфигурация — это такой набор define'ов, который включает/выключает те или иные особенности в коде библиотеки. Или, там, определяет размер int'а в байтах... Часто вместе с библиотекой идёт скрипт, который, например, может скомпилировать тестовый пример, запустить его и по выданному результату добавить тот или иной define в config.h, а этот config.h потом, на этапе компиляции библиотеки, подхватывается и используется. Так вот эту конфигурацию надо проводить на target системе, а для этого там нужно установить компилятор... Ну или потратить несколько дней рассматривая код и подбирая подходящие define'ы.
BFE>>В смысле — надуманные? Это реальная проблема
ЕМ>В том посте, на который ссылка, я вижу только искусственно созданные длинные пути.
А вам хотелось бы увидеть реальные строки из моей рабочей системы? Зачем? С какой целью интересуетесь?
ЕМ>Допускаю, что и в реальных применениях случаются настолько развесистые имена/вложенности, что не влезают в 260 символов, но это явная редкость.
Да ну какая там редкость! Просто ограничение в винде накладывают естественным образом ограничения на пользователей, а вот начинаешь что-нибудь развесистое из другой системы копировать и облом.
ЕМ>В винде ограничение в MAX_PATH кончилось с кончиной 9x/ME, а в NT оно осталось только для ANSI-версий. Чтобы это убрать, достаточно переопределить fopen, findfirst и прочее через соответствующие Unicode-аналоги, добавив трансляцию.
Все исходники открыты, можете заняться.
ЕМ>Но, исходя из
BFE>>и вряд ли её кто-то будет чинить.
ЕМ>подавляющее большинство это не парит, а нарываются лишь любители_чрезмерно_длинных_имен, которых в общей массе крайне мало.
Это не будут чинить по другой причине: поставил WSL и нет таких проблем.
BFE>>есть библиотека, а она подключает заголовок, которой нет в системе.
ЕМ>Вот это "заголовки, которые есть в системе" — один из основных источников боли, связанной с линуксами.
Обязательное условие наличия в системе компилятора, линкера, заголовков и библиотек сродни требованию о том, чтобы в каждом автомобиле был полный набор инструментов и материалов, позволяющий собрать его с нуля в чистом поле.
Это вполне нормально выглядело в древности, но последние лет тридцать это явное извращение. Все эти средства должны быть в виде отдельных, изолированных наборов, и ставиться/подключаться в том составе, что необходим конкретному разработчику.
А я спорю? Но вы попробуйте убедить какого-нибудь линуксоида устанавливать библиотеки не в систему, а домашний каталог. Заранее предупреждаю, что за разрыв шаблона ответственность на себя брать не буду.
BFE>>Значит этот файл надо копировать из системы, а он тянет другой и так все файлы, один за другим переползают в sysroot...
ЕМ>Вместо этого должны быть явно определенные зависимости — какие именно SDK и библиотеки нужны для сборки. А не бесформенная куча файлов из разных источников в одном месте.
Ну раз должны, тогда надо назначить ответственного. Есть кандидаты?
BFE>>И если окажется, что компилятор по какой-то причине не понимает вот этот вот заголовок из недр sysroot'a или понимает его не правильно...
ЕМ>Почему такое вдруг может оказаться? Если библиотека заточена под конкретный компилятор или конкретную его версию, то вероятность найти такой компилятор для "большой", ходовой системы должна быть выше, чем для "малой" целевой.
Да мало ли любителей переопределять unsigned int в UI32 ? Или приводить указатель на структуру к int'у?
BFE>>Так ведь не было такой идеи.
ЕМ>Почти в любом описании идеологии *nix-систем подчеркивается идея совместимости софта. Врут?
Да где вы такое читали? Это в Windows обратная совместимость вплоть до DOSа и ограничение в 256+4 . А в *nix-е у каждого маньяка свой лунапарк с блэкджеком и командой print:
"типичный последователь UNIX'а никогда не может запомнить, как на этой неделе называется команда PRINT" (с) старая классика