Linux lib / include организация для кросс-скомпилированных библиотек? - PullRequest
2 голосов
/ 16 декабря 2008

Мы кросс-компилируем приложение для встроенной цели Linux под настольным Linux. Для тестирования и других целей мы используем статически связанные библиотеки с нашим приложением. Используемая нами библиотека тестирования: CMockery .

У меня вопрос: где должны жить статические библиотеки и включаемые файлы для CMockery, учитывая, что мы кросс-компилируем?

Если мы не кросс-компилируем, вещи должны идти в /usr/local/lib.

Некоторые предложения от нашей команды:

/ opt / google / lib и / opt / google / include / opt / embeddedLinuxDistro / usr / local / share / google / lib (и включить) / usr / local / arch / lib (и включать)

Любые указатели оценены!

1 Ответ

1 голос
/ 19 декабря 2008

Примечание: после написания этого ответа мое резюме будет:

Храните все, что не является стандартным для дистрибутива Linux, который вы используете, отдельно. Фактически храните файлы для разных проектов отдельно, даже если они совместно используют библиотеки. Это значительно облегчит перенос файлов на другой компьютер, настройку нескольких завершенных сборок для тестирования и, что самое важное, возможность воссоздать сборку, начиная с нуля.


Решение действительно субъективное.

  • Вам нужна только одна копия библиотеки для всех пользователей?
  • Это редко меняется?
  • Если ваша сборочная машина загорелась и у вас не было резервных копий этой машины, как быстро и легко вы могли бы перестроить свою среду библиотек и кросс-компиляторов?

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

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

Наконец, я не буду беспокоиться о попытках придерживаться «стандартных» расположений библиотек, потому что вы не создаете и не управляете дистрибутивом Linux. Кроме того, большинство людей на самом деле не знают ничего, кроме "/ usr / lib" и / usr / local / lib ", и даже люди, которые знают их, не знают разницы.

Делайте то, что лучше для вашего проекта, независимо от того, что это может быть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...