Прекомпилированные библиотеки, которые созданы из модулей кода, полезно использовать в больших проектах для ускорения процесса компиляции. В библиотеки целесообразно поместить код, который не меняется в настоящий момент (когда идет работа над чем-то другим). В составе IAR есть обстоятельная документация "IAR Runtime Environment and Library User Guide" [1], однако оно довольно большое и сложное для изучения. Здесь представлено простое руководство - как в проекте использовать заранее скомпилированный код в виде библиотек (prebuild library), чтобы помногу раз не перекомпилировать одни и те же файлы и экономить время разработки.
[Как создать библиотеку в IAR]
1. Создайте проект, куда добавьте модули исходного кода, которые должны быть помещены в библиотеку (меню Project -> Create New Project... -> C -> main -> OK -> укажите имя файла проекта и выберите папку, куда он будет сохранен). Удалите из проекта модуль main.c, который был создан автоматически, и добавьте в проект все модули кода, которые должны быть помещены библиотеку. Настройки нового проекта для библиотеки будут во многом копировать настройки других Ваших проектов - нужно выбрать тип процессора, уровень оптимизации, прописать пути поиска заголовков и проч.
2. Откройте свойства проекта, перейдите в раздел General Options, выберите закладку Output. Переставьте радиокнопку Output file в положение Library.
3. Скомпилируйте проект. По умолчанию выходной файл библиотеки создастся в папке Debug\Exe, и файл получит имя проекта и расширение *.a. Это и есть прекомпилированный файл библиотеки. Теперь его нужно добавить в тот проект,
[Как добавить библиотеку в проект вместо модулей исходного кода]
1. Удалите из проекта все файлы модулей, которые были перенесены библиотеку. Проще всего, когда эти модули в проекте содержатся в отдельной папке. Тогда достаточно просто отключить от процесса компиляции в проекте папку с этими модулями, не удаляя их из проекта (впоследствии всегда можно их подключить обратно). Щелкните в дереве проекта правой кнопкой на папке, которую хотите отключить от компиляции, выберите Options... и поставьте галочку Exclude from build. Теперь эти модули компилироваться не будут. Код из этих модулей будет браться из библиотеки.
2. В проекте, куда хотите добавить библиотеку, зайдите в свойства проекта через меню Project -> Options, перейдите в раздел Linker -> закладка Library, и в поле Additional libraries добавьте полный путь до файла библиотеки. Не стесняйтесь использовать макросы IAR типа $PROJ_DIR$, чтобы удалить привязку к абсолютным путям. Например, путь до файла библиотеки может быть наподобие следующего:
$PROJ_DIR$\..\..\precompiled-IAR-libs\efsl-lib\Debug\Exe\efsllibprj.a
3. Перекомпилируйте проект с добавленной библиотекой. Он должен скомпилироваться без ошибок.
[Ссылки]
1. IAR Runtime Environment and Library User Guide site:supp.iar.com. |
Комментарии
microsin: по указанным симптомам ничего посоветовать не могу. Обычно все работает тупо и просто - если есть вызов объекта библиотеки, то линкер берет оттуда код, а если нет, то код просто не вставляется. Независимо от того, подключена библиотека к проекту, или нет.
RSS лента комментариев этой записи