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

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

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

2

Решение

Если вы говорите о библиотеках, я предполагаю, что вы имеете в виду скомпилированные библиотеки (.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,

2

Другие решения

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

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

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

1

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

0

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

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

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

0
По вопросам рекламы [email protected]