Разница между компиляцией библиотеки и просто использованием ее исходных файлов в приложении - PullRequest
2 голосов
/ 16 февраля 2011

Я работаю с MCU в C, и у меня уже есть готовая библиотека, которую я хочу использовать для создания собственного приложения. Где разница между:

  1. компилирует файлы библиотеки в .lib, а затем связывает мое приложение (которое использует эту библиотеку) с этим .lib и компилирует его в мою цель
  2. просто создаю один проект, в который я импортирую все файлы (.c и .h) и компилирую его в свою цель

Это очень простой и общий вопрос, но я бы хотел его прояснить.

Ответы [ 2 ]

3 голосов
/ 16 февраля 2011

РЕДАКТИРОВАТЬ: Ответ предполагает, что вы спрашиваете с точки зрения разработки программного обеспечения.

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

При подходе с одним проектом у вас будут все те же объектные файлы, которые компилируются при необходимости (как в подходе с отдельной библиотекой). Только те измененные файлы получат свои объектные файлы заново сгенерированы соответственно. Однако вы все равно получите совершенно новый файл библиотеки / приложения.

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

Надеюсь, это поможет!

1 голос
/ 16 февраля 2011

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

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