Я планирую сделать несколько проектов на C и C ++ под Linux. В некоторых проектах мне понадобятся дополнительные библиотеки. Поправьте меня если я ошибаюсь. Я планирую хранить библиотеки в /usr/local/include
, Но стоит ли смешивать все библиотеки в одном каталоге? Может быть, лучше создать подкаталоги для имен libs в /usr/local/include
каталог? А может быть, лучше хранить заголовки и исходники в разных каталогах? Нужна лучшая практика.
Как бороться с не скомпилированными библиотеками, как например MiniIni
https://code.google.com/p/minini/. Он поставляется с заголовком и C-файлами. Должен ли я скомпилировать его и поместить в /lib
каталог и заголовки для /include
, Или, может быть, лучше поместить все в / включить?
Если вы говорите о библиотеках, я предполагаю, что вы имеете в виду скомпилированные библиотеки (.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).
Таким образом, ваша работа не навязчива в вашей системе и не сломает ее.