2013-08-09 8 views
1

Я создал проект Eclipse CDT, который использует autotools из библиотеки исходного кода libsndfile. Он отлично работает в Eclipse. Как мне изменить этот проект, чтобы использовать его как компонент REDHAWK так, как используется библиотека dsp и другие?Использование внешних библиотек в REDHAWK

Спасибо!

ответ

1

Существует несколько подходов к объединению общей библиотеки для работы с REDHAWK. Самый простой способ - установить библиотеку на GPP и выполнить шаги, описанные в разделе «Включая внешние библиотеки», найденные в REDHAWK documentation.

Подход, сделанный вами в dsplib, о котором вы просили, несколько отличается. Это создает зависимость библиотеки REDHAWK softpackage, которая устанавливается в SDRROOT и развернута во время выполнения вместе с вашим компонентом. Ниже перечислены шаги по созданию предварительного проекта C++, работающего в REDHAWK. Этот ответ не распространяется на получение библиотеки, чтобы построить или процесс его импорта в затмении, поскольку существует множество сообщений по этим темам:

  1. Импорт библиотеки в вашей IDE.

  2. Создайте свою общую библиотеку, так что у вас есть общий объект (файл .so)

  3. Добавить .spd.xml файл в вашей библиотеке, например, как один нашел here.

  4. Редактировать этот файл .spd.xml:

4а. Обновите тег localfile, чтобы указать местоположение вашего конкретного .so-файла.

4b. Убедитесь, что значение тега ид реализации представляет собой уникальный номер версии для библиотеки

  1. Добавить .project файл, если он не существует, таких как найденному нашел here. Откройте файл .project и убедитесь, что следующие натуры включены:

    <nature>gov.redhawk.ide.natures.sca.project</nature> 
    <nature>gov.redhawk.ide.natures.sca.component</nature> 
    
  2. Теперь вы должны быть в состоянии перетащить sofpackage библиотеки в корень SDR.

Вот шаги, чтобы обновить свои отдельные компоненты, которые строят, чтобы использовать новую библиотеку:

  1. Отредактируйте компоненты Makefile.am в папке реализации каст. Отредактируйте _CXXFLAGS, чтобы добавить путь к вашим файлам заголовков, _LDADD, чтобы добавить вашу библиотеку, и _LDFLAGS, чтобы включить путь к вашей библиотеке. См. this example о том, как компонент agc модифицирует эти переменные, чтобы включить библиотеку dsp.

  2. Редактировать файл .spd.xml для включения зависимости softpackage. В разделе реализации добавьте зависимость времени выполнения от вашей библиотеки, такую ​​как найденная here.В частности - ваш раздел зависимости должна быть следующим:

    <dependency type="runtime_requirements"> 
        <softpkgref> 
        <localfile name="XXXX"/> 
        <implref refid="YYYY"/> 
        </softpkgref> 
    </dependency> 
    

XXXX это путь к установленной библиотеке .spd.xml файлу в SDRROOT относительно каталога йота (она должна начинаться с/компонентами) YYYY это ваше конкретное значение реализации, определенное в пункте 4b выше.

+0

Спасибо! Я в конечном итоге выяснил большую часть этого. Однако, похоже, что некоторые пакеты исходного кода не создают файл .so, пока вы не запустите команду «make install». Таким образом, мне пришлось изменить параметр -prefix в Eclipse, чтобы установить .so в каталог Release и добавить файл build.sh в проект Eclipse (изменение команды сборки). Казалось, это сработало. – wakeboard82

0

Я не могу добавлять комментарии, поэтому извиняюсь за предоставление «ответа».

Для меня описание Youssef отлично подходит для создания компонентов с разделяемыми библиотеками. Однако для того, чтобы загрузить совместно используемые библиотеки во время выполнения, мне необходимо добавить следующее к Makefile.am _LDFLAGS:

-Xlinker -rpath -Xlinker ../../dsp/Release 

Где «/ дсп/Release» относительный путь к какой разделяемой библиотеке вы создали.

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