Путь для хранения библиотек. Нужна лучшая практика

Я планирую сделать несколько проектов на C и C++ под Linux. В некоторых проектах мне понадобятся дополнительные библиотеки. Поправьте меня если я ошибаюсь. Я планирую хранить библиотеки в /usr/local/include, Но стоит ли смешивать все библиотеки в одном каталоге? Может быть, лучше создать подкаталоги для имен libs в /usr/local/include каталог? А может быть, лучше хранить заголовки и исходники в разных каталогах? Нужна лучшая практика.

Как бороться с не скомпилированными библиотеками, как например MiniIni https://code.google.com/p/minini/. Он поставляется с заголовком и C-файлами. Должен ли я скомпилировать его и поместить в /lib каталог и заголовки для /include, Или, может быть, лучше поместить все в / включить?

4 ответа

Если вы говорите о библиотеках, я предполагаю, что вы имеете в виду скомпилированные библиотеки (.so файлы или .a файлы). Те должны идти в /usr/local/lib/, Заголовки должны идти в /usr/local/include, источники .cpp файлы обычно не должны никуда уходить при установке. Иногда необходимо установить их, чтобы их можно было перестроить по требованию (на ум приходит dkms). Тогда источники должны перейти в /usr/local/src/project_name/,

Я лично предпочитаю устанавливать заголовки и библиотеки в подкаталогах /usr/local/include а также /usr/local/libНо не все согласятся.

/usr/local Префикс всегда должен быть настраиваемым. Хотя традиционный make install следует использовать его по умолчанию, упаковщики в дистрибутивах, несомненно, изменят его для установки непосредственно в /usr,

Я надеюсь, что вы не храните библиотеки в / usr / local / include. Они принадлежат / usr / local / lib или, возможно, /usr/local/lib64.

Заголовки, необходимые для отдельных проектов, НЕ должны входить в / usr / local / include, они должны оставаться в проекте. Поместите материал в / usr / local / lib и / usr / local / include, если вы собираете библиотеку для включения в несколько ваших проектов. Даже тогда я сохранял заголовки локально для проекта и копировал их только в / usr / local / include как часть процесса сборки.

Что касается одного или другого каталога в вашем дереве проекта, это зависит от того, насколько велик проект. Я обычно начинаю перемещать вещи в отдельные каталоги, когда количество файлов (source + include) начинает превышать 20.

Теперь перейдем к вашему вопросу использования подкаталогов. Никогда не рекомендуется смешивать все библиотеки в одном каталоге. Так что лучше всего иметь подкаталоги, а затем ссылаться на соответствующие файлы, используя "относительные" пути.

Я бы предложил хранить всю вашу библиотеку в каталоге пользовательских библиотек.

установите переменную среды LD_LIBRARY_PATH в этот каталог или используйте опцию -L, если используете gcc (например, для minini).

Таким образом, ваша работа не навязчива в вашей системе и не сломает ее.

Другие вопросы по тегам