2013-12-17 2 views
2

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

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

ответ

2

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

+0

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

+0

@ user1501700 Это действительно особый случай и не похоже, что он должен быть когда-либо установлен, но включен в проекты, которые его используют. Маловероятно, что ваш проект закончится так. – pmr

1

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

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

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

0

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

0

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

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

как это ваша работа не является назойливой в вашей системе m и не нарушает ее.

Смежные вопросы