Удалить ссылки в общем объекте на другой общий объект - PullRequest
0 голосов
/ 30 мая 2011

Я хочу удалить ссылки в общем объекте на символы другого общего объекта, потому что указанный объект имеет лицензию GPL, и я не хочу выпускать свой код под этой лицензией. (Я не думаю, что символы, предоставленные ссылочным объектом, используются моим кодом.) Какие шаги необходимо предпринять для этого в Linux? Я не знаком с этой технологией, и было бы полезно, если бы вы предоставили команды. Будет ли другой подход лучше? Было бы лучше как-нибудь создать объект-заглушку, заменяющий указанный объект?

Редактировать 1: я использую PyInstaller для создания автономного архива, содержащего двоичные файлы для кода, который я написал, а также все библиотеки, которые требует код, и все библиотеки, которые требуются для этих библиотек. Эти библиотеки являются общими объектами, которые уже существуют в системе сборки. Было бы слишком много работы, чтобы отказаться от PyInstaller и перекомпилировать все, чтобы библиотеки GPL не были связаны между собой.

1 Ответ

3 голосов
/ 30 мая 2011

В Linux единственными библиотеками, на которые непосредственно ссылается исполняемый файл или библиотека, являются libc.so, ld-linux.so, linux-gate.so, плюс все, что вы явно запрашиваете в командной строке компилятора . Таким образом, вы можете удалить эти ссылки, просто удалив их из командной строки компилятора.

Обратите внимание, что часто сценарии pkg-config возвращают все косвенные зависимости, а также прямые зависимости при запросе флагов компоновщика. Вы можете либо удалить ненужные зависимости вручную, либо передать компоновщику флаг -Wl,--as-needed, чтобы дать ему команду автоматически удалять ненужные прямые ссылки на общие библиотеки.

Что касается комплектации pyinstaller, имейте в виду, что косвенное связывание библиотек GPL через промежуточную библиотеку уже является чем-то вроде серой области; если вы дополнительно объедините их в один файл, это может не считаться «простым объединением» и не может обойти ограничения GPL. Также обратите внимание, что в GPL никогда не упоминается «связывание»; это все о производных работах. Я не юрист, и это не юридический совет, но простое добавление или удаление НЕОБХОДИМОЙ записи для библиотеки GPL, когда символы не используются, кажется маловероятным, чтобы повлиять на то, нарушаете ли вы GPL, когда сама GPL никогда не упоминает такую ​​вещь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...