2017-02-17 3 views
0

Я занимаюсь разработкой кросс-платформенного приложения на C++, и на данный момент я занимаюсь тем, что он работает в Linux, где у меня мало опыта. Это приложение использует сторонние библиотеки, такие как Poco и Boost, чтобы назвать несколько. Я работаю над версией Ubuntu Desktop, где я их динамически создавал, а их заголовки включены в usr/local/include, тогда как .so-файлы в usr/местные/Библиотека.
Если я хочу распространять это приложение, достаточно просто упаковать исходный код (исполняемый файл) + заголовки и, следовательно, файлы сторонних библиотек или если получатель приложения должен установить эти библиотеки на своем компьютере, как хорошо для приложения выполнить?Развертывание дистрибутивного приложения Linux C++ с сторонними библиотеками

+0

Почему вы считаете, что вам нужно распространять файлы cpp и заголовки с помощью двоичного кода вашего приложения? – IInspectable

+0

Для начала ознакомьтесь с лицензиями всех используемых библиотек. – deviantfan

+2

Говоря как кто-то, у кого есть несколько из этих вещей, упакованных в несколько дистрибутивов Linux: только упаковывайте свой собственный код, затем предоставляйте четкую документацию, какие зависимости должны быть установлены для компиляции и установки собственного хранилища. Если вы предоставите свой собственный файл спецификации RPM или любой другой APT, который должен сделать эквивалент, вы можете получить часть своего собственного пакета, как часть вашего собственного пакета. –

ответ

1

Проверьте лицензии на сторонний код. Если это GPL, укажите исходные коды tarballs в вашей загрузке. Это проще всего, потому что это не дает вам ничего позже. В противном случае, если Debian/Ubuntu отключит их зеркали архива шесть лет спустя, вы все еще можете создать источник для тех, кто его запрашивает.

Затем запишите свой код в автономное приложение Linux. Вы делаете это, помещая все разделяемые библиотеки, которые вам нужны, в ваш каталог. Вы выбираете, где определить границы. Вы можете решить, что можете полагаться на библиотеку C системы, OpenGL, SDL и т. Д. И не нужно связывать их.

Затем создайте сценарий оболочки, который использует $0 (это переменная sh, которая является полным именем скрипта), чтобы узнать, от чего она работает. Комплект LD_LIBRARY_PATH до dirname "$0", а затем exec realprogram [email protected]

Если вы сделаете так, ваш код может работать в системах долгое время в будущем. Посмотрите, как Quake 3 был упакован для Linux, это было сделано так.

+0

Так исправьте меня, если я ошибаюсь таким образом, в моем примере можно обойти чтение of usr/local/include, потому что я не мог найти способ либо в среде IDE, либо в примерах Makefile, которые, как я нашел, исключают эту папку из процедуры построения – dk13