usrp-users@lists.ettus.com

Discussion and technical support related to USRP, UHD, RFNoC

View all threads

Re: [USRP-users] cross-compiling with external libraries on E310

FQ
Francois Quitin
Thu, Oct 26, 2017 2:07 PM

Dear Philip, EJ,

Thanks a lot for your replies. To keep things simple, I'm tying to
manually cross-compile the Armadillo library. Unfortunately, there are a
few dependencies that are not available on the default E310 image
(OpenBLAS, LAPACK, ATLAS, SuperLU).

We've made quite a few changes to the E310 FPGA, so I'm a bit frisky at
re-installing UHD using pybombs... I'd rather just include the libraries
and dependencies I need to my current UHD version.

Anyway, with the clues you gave me I should be able to figure something
out.

Thanks!
François

On 26.10.2017 15:27, EJ Kreinar wrote:

Hi Francois, 

I see Balister beat me to reply... I'm not a cross-compile expert, so
he probably has better recommendations, but I'll add a couple
thoughts. There's probably three feasible options:

  1. Manual cross compile: Manually compile the project of interest,
    sourcing the SDK environment and then building with cmake or whatever
    the project's build system is (armadillo looks like cmake). This is a
    decent introduction to using the SDK
    (http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html [3]).
    Then deploy the generated code to the E310. It's feasible, but could
    be a headache if the external project has other dependencies.
  2. Pybombs cross compile: I just checked, and there's an armadillo
    recipe in gr-recipes... Assuming you're using the E310 SDK inside a
    pybombs prefix, it might be an easy solution to just pybombs install
    armadillo. Worth a shot! And if it doesnt work, it would be good to
    share how to fix this :D 
  3. Open-embedded build: Because the E310 distro is built using
    openembedded (https://github.com/EttusResearch/meta-ettus/tree/jethro
    [4] -- the jethro branch is, I believe, the most recent build), you
    could bake the projects of interest into the rootfs from scratch. The
    good news is that it seems there's already an armadillo recipe
    available: http://layers.openembedded.org/layerindex/recipe/58748/
    [5] If the image you build installs the armadillo recipe, it will
    automatically include any dependencies into the rootfs. Then, you can
    export the SDK and use that for your cross compile. 

If you're already using pybombs, it could be easy to do #2. If you
roll your own rootfs and SDK using openembedded, then you have to
maintain your personal SD image/SDK for everything, which has its own
downsides. 

EJ

On Thu, Oct 26, 2017 at 9:01 AM, Francois Quitin via USRP-users
usrp-users@lists.ettus.com wrote:

Dear all,

I'm writing code for the USRP E310 using the SDK from
http://files.ettus.com/e3xx_images/e3xx-release-4/ [1]  I've been
able to write code, cross-compile it and execute it without any
problems on the E310.

I'm trying to include external libraries (open-source ones, such as
Armadillo) to my cross-compiling project. How can I "cleanly"
include these libraries in my cross-compiling project?

Thanks,
François



USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
[2]


Francois QUITIN
Assistant Professor

BEAMS Dpt. – Embedded Electronics
Brussels School of Engineering
Université Libre de Bruxelles (ULB)

Web  https://sites.google.com/site/fquitin2/
Phone +32 2 650 2829

Dear Philip, EJ, Thanks a lot for your replies. To keep things simple, I'm tying to manually cross-compile the Armadillo library. Unfortunately, there are a few dependencies that are not available on the default E310 image (OpenBLAS, LAPACK, ATLAS, SuperLU). We've made quite a few changes to the E310 FPGA, so I'm a bit frisky at re-installing UHD using pybombs... I'd rather just include the libraries and dependencies I need to my current UHD version. Anyway, with the clues you gave me I should be able to figure something out. Thanks! François On 26.10.2017 15:27, EJ Kreinar wrote: > Hi Francois,  > > I see Balister beat me to reply... I'm not a cross-compile expert, so > he probably has better recommendations, but I'll add a couple > thoughts. There's probably three feasible options: > > 1. Manual cross compile: Manually compile the project of interest, > sourcing the SDK environment and then building with cmake or whatever > the project's build system is (armadillo looks like cmake). This is a > decent introduction to using the SDK > (http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html [3]). > Then deploy the generated code to the E310. It's feasible, but could > be a headache if the external project has other dependencies. > 2. Pybombs cross compile: I just checked, and there's an armadillo > recipe in gr-recipes... Assuming you're using the E310 SDK inside a > pybombs prefix, it might be an easy solution to just pybombs install > armadillo. Worth a shot! And if it doesnt work, it would be good to > share how to fix this :D  > 3. Open-embedded build: Because the E310 distro is built using > openembedded (https://github.com/EttusResearch/meta-ettus/tree/jethro > [4] -- the jethro branch is, I believe, the most recent build), you > could bake the projects of interest into the rootfs from scratch. The > good news is that it seems there's already an armadillo recipe > available: http://layers.openembedded.org/layerindex/recipe/58748/ > [5] If the image you build installs the armadillo recipe, it will > automatically include any dependencies into the rootfs. Then, you can > export the SDK and use that for your cross compile.  > > If you're already using pybombs, it could be easy to do #2. If you > roll your own rootfs and SDK using openembedded, then you have to > maintain your personal SD image/SDK for everything, which has its own > downsides.  > > EJ > > On Thu, Oct 26, 2017 at 9:01 AM, Francois Quitin via USRP-users > <usrp-users@lists.ettus.com> wrote: > >> Dear all, >> >> I'm writing code for the USRP E310 using the SDK from >> http://files.ettus.com/e3xx_images/e3xx-release-4/ [1]  I've been >> able to write code, cross-compile it and execute it without any >> problems on the E310. >> >> I'm trying to include external libraries (open-source ones, such as >> Armadillo) to my cross-compiling project. How can I "cleanly" >> include these libraries in my cross-compiling project? >> >> Thanks, >> François >> >> --- >> >> _______________________________________________ >> USRP-users mailing list >> USRP-users@lists.ettus.com >> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com >> [2] > > > > Links: > ------ > [1] http://files.ettus.com/e3xx_images/e3xx-release-4/ > [2] http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com > [3] http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html > [4] https://github.com/EttusResearch/meta-ettus/tree/jethro > [5] http://layers.openembedded.org/layerindex/recipe/58748/ --- Francois QUITIN Assistant Professor BEAMS Dpt. – Embedded Electronics Brussels School of Engineering Université Libre de Bruxelles (ULB) Web https://sites.google.com/site/fquitin2/ Phone +32 2 650 2829
PB
Philip Balister
Thu, Oct 26, 2017 2:15 PM

On 10/26/2017 04:07 PM, Francois Quitin via USRP-users wrote:

Dear Philip, EJ,

Thanks a lot for your replies. To keep things simple, I'm tying to
manually cross-compile the Armadillo library. Unfortunately, there are a
few dependencies that are not available on the default E310 image
(OpenBLAS, LAPACK, ATLAS, SuperLU).

Yes, I'm aware that pain. I do need to look over what the gnss sdr guys
have done and see what I can do to make it easier for people in your
position.

Philip

We've made quite a few changes to the E310 FPGA, so I'm a bit frisky at
re-installing UHD using pybombs... I'd rather just include the libraries
and dependencies I need to my current UHD version.

Anyway, with the clues you gave me I should be able to figure something
out.

Thanks!
François

On 26.10.2017 15:27, EJ Kreinar wrote:

Hi Francois, 

I see Balister beat me to reply... I'm not a cross-compile expert, so
he probably has better recommendations, but I'll add a couple
thoughts. There's probably three feasible options:

  1. Manual cross compile: Manually compile the project of interest,
    sourcing the SDK environment and then building with cmake or whatever
    the project's build system is (armadillo looks like cmake). This is a
    decent introduction to using the SDK
    (http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html [3]).
    Then deploy the generated code to the E310. It's feasible, but could
    be a headache if the external project has other dependencies.
  2. Pybombs cross compile: I just checked, and there's an armadillo
    recipe in gr-recipes... Assuming you're using the E310 SDK inside a
    pybombs prefix, it might be an easy solution to just pybombs install
    armadillo. Worth a shot! And if it doesnt work, it would be good to
    share how to fix this :D 
  3. Open-embedded build: Because the E310 distro is built using
    openembedded (https://github.com/EttusResearch/meta-ettus/tree/jethro
    [4] -- the jethro branch is, I believe, the most recent build), you
    could bake the projects of interest into the rootfs from scratch. The
    good news is that it seems there's already an armadillo recipe
    available: http://layers.openembedded.org/layerindex/recipe/58748/
    [5] If the image you build installs the armadillo recipe, it will
    automatically include any dependencies into the rootfs. Then, you can
    export the SDK and use that for your cross compile. 

If you're already using pybombs, it could be easy to do #2. If you
roll your own rootfs and SDK using openembedded, then you have to
maintain your personal SD image/SDK for everything, which has its own
downsides. 

EJ

On Thu, Oct 26, 2017 at 9:01 AM, Francois Quitin via USRP-users
usrp-users@lists.ettus.com wrote:

Dear all,

I'm writing code for the USRP E310 using the SDK from
http://files.ettus.com/e3xx_images/e3xx-release-4/ [1]  I've been
able to write code, cross-compile it and execute it without any
problems on the E310.

I'm trying to include external libraries (open-source ones, such as
Armadillo) to my cross-compiling project. How can I "cleanly"
include these libraries in my cross-compiling project?

Thanks,
François



USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
[2]


Francois QUITIN
Assistant Professor

BEAMS Dpt. – Embedded Electronics
Brussels School of Engineering
Université Libre de Bruxelles (ULB)

Web   https://sites.google.com/site/fquitin2/
Phone +32 2 650 2829


USRP-users mailing list
USRP-users@lists.ettus.com
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

On 10/26/2017 04:07 PM, Francois Quitin via USRP-users wrote: > Dear Philip, EJ, > > Thanks a lot for your replies. To keep things simple, I'm tying to > manually cross-compile the Armadillo library. Unfortunately, there are a > few dependencies that are not available on the default E310 image > (OpenBLAS, LAPACK, ATLAS, SuperLU). Yes, I'm aware that pain. I do need to look over what the gnss sdr guys have done and see what I can do to make it easier for people in your position. Philip > > We've made quite a few changes to the E310 FPGA, so I'm a bit frisky at > re-installing UHD using pybombs... I'd rather just include the libraries > and dependencies I need to my current UHD version. > > Anyway, with the clues you gave me I should be able to figure something > out. > > Thanks! > François > > > > On 26.10.2017 15:27, EJ Kreinar wrote: >> Hi Francois,  >> >> I see Balister beat me to reply... I'm not a cross-compile expert, so >> he probably has better recommendations, but I'll add a couple >> thoughts. There's probably three feasible options: >> >> 1. Manual cross compile: Manually compile the project of interest, >> sourcing the SDK environment and then building with cmake or whatever >> the project's build system is (armadillo looks like cmake). This is a >> decent introduction to using the SDK >> (http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html [3]). >> Then deploy the generated code to the E310. It's feasible, but could >> be a headache if the external project has other dependencies. >> 2. Pybombs cross compile: I just checked, and there's an armadillo >> recipe in gr-recipes... Assuming you're using the E310 SDK inside a >> pybombs prefix, it might be an easy solution to just pybombs install >> armadillo. Worth a shot! And if it doesnt work, it would be good to >> share how to fix this :D  >> 3. Open-embedded build: Because the E310 distro is built using >> openembedded (https://github.com/EttusResearch/meta-ettus/tree/jethro >> [4] -- the jethro branch is, I believe, the most recent build), you >> could bake the projects of interest into the rootfs from scratch. The >> good news is that it seems there's already an armadillo recipe >> available: http://layers.openembedded.org/layerindex/recipe/58748/ >> [5] If the image you build installs the armadillo recipe, it will >> automatically include any dependencies into the rootfs. Then, you can >> export the SDK and use that for your cross compile.  >> >> If you're already using pybombs, it could be easy to do #2. If you >> roll your own rootfs and SDK using openembedded, then you have to >> maintain your personal SD image/SDK for everything, which has its own >> downsides.  >> >> EJ >> >> On Thu, Oct 26, 2017 at 9:01 AM, Francois Quitin via USRP-users >> <usrp-users@lists.ettus.com> wrote: >> >>> Dear all, >>> >>> I'm writing code for the USRP E310 using the SDK from >>> http://files.ettus.com/e3xx_images/e3xx-release-4/ [1]  I've been >>> able to write code, cross-compile it and execute it without any >>> problems on the E310. >>> >>> I'm trying to include external libraries (open-source ones, such as >>> Armadillo) to my cross-compiling project. How can I "cleanly" >>> include these libraries in my cross-compiling project? >>> >>> Thanks, >>> François >>> >>> --- >>> >>> _______________________________________________ >>> USRP-users mailing list >>> USRP-users@lists.ettus.com >>> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com >>> [2] >> >> >> >> Links: >> ------ >> [1] http://files.ettus.com/e3xx_images/e3xx-release-4/ >> [2] http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com >> [3] http://www.yoctoproject.org/docs/2.1/sdk-manual/sdk-manual.html >> [4] https://github.com/EttusResearch/meta-ettus/tree/jethro >> [5] http://layers.openembedded.org/layerindex/recipe/58748/ > > --- > Francois QUITIN > Assistant Professor > > BEAMS Dpt. – Embedded Electronics > Brussels School of Engineering > Université Libre de Bruxelles (ULB) > > Web   https://sites.google.com/site/fquitin2/ > Phone +32 2 650 2829 > > _______________________________________________ > USRP-users mailing list > USRP-users@lists.ettus.com > http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com