Changes between Version 7 and Version 8 of toolchain/install


Ignore:
Timestamp:
Feb 10, 2017, 3:38:55 PM (5 years ago)
Author:
Bayard Gildas
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • toolchain/install

    v7 v8  
    4545}}}
    4646
    47  * For an Intel graphic card, it's a little bit more complicated, due to several versions and path for the libraries. In most of cases, those commands are enough to make it work :
     47 * For an Intel graphic card, it's a little bit more complicated, due to several versions and path for the libraries.
     48The idea is that we're using the system video card driver since it's not included in robomap3.
     49The driver itself (eg: i965_dri.so) should be loaded automatically (from /usr/lib/x86_64-linux-gnu/dri/). But this driver may not succesfully load since it requires some specific library versions that may not match robomap3's.
     50To debug this you should launch your 3D graphic program (eg: simulator) with the LIBGL_DEBUG env var set to verbose
     51For example
    4852{{{
    49 $ sudo mkdir -p /usr/lib/dri
    50 $ sudo cp /usr/lib/x86_64-linux-gnu/dri/* /usr/lib/dri/.
    51 $ sudo cp /usr/lib/x86_64-linux-gnu/libdrm* /usr/lib/x86_64-linux-gnu/mesa/.
     53$ LIBGL_DEBUG=verbose ./LineFollower_simulator_nrt -n x4_0 -t x4 -a 127.0.0.1 -p 9000 -x setup_x4.xml (...)
    5254}}}
    53 Note that there is a bug with Intel cards and output of virtual cameras is disabled. So you will not be able to do image processing with such a card.
     55Notice the line that look like {{{ libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /usr/lib/x86_64-linux-gnu/dri/i965_dri.so) }}}
     56This means that the local system driver needs a version of libstdc++.so.6 that defines the symbol CXXABI_1.3.9 (meaning application binary interface version 1.3.9)
     57The version of libstdc++ included in robomap3 probably doesn't define this symbol. You can make sure with {{{ strings /.../robomap3/1.7.3/core2-64/sysroots/core2-64-poky-linux/usr/lib/libstdc++.so.6 | grep CXXABI_ }}}.
     58So we need to preload the libstdc++ library of the system to avoid robomap3 one to be loaded
     59To achieve this we need to set the LD_PRELOAD environment variable like this {{{ LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6 ./LineFollower_simulator_nrt ... }}}
    5460
    55 __NB__: please adapt the source/destination paths to your case
     61Stopping here may be enough, but you then can see errors like {{{ i965_dri.so: undefined symbol: nouveau_drm_new }}}.
     62Same problem: the driver needs a version of a library (here libdrm_nouveau.so.2) which defines a specific symbol that doesn't exist in robomap3 version (yet).
     63Same solution: preload the local system library.
     64Repeat this until all unresolved symbols are gone.
     65On ubuntu 16.10 with robomap3 1.7.3, I ended up with the following
     66{{{
     67LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libstdc++.so.6:/usr/lib/x86_64-linux-gnu/libdrm_intel.so.1:/usr/lib/x86_64-linux-gnu/libdrm_nouveau.so.2:/usr/lib/x86_64-linux-gnu/libdrm_radeon.so.1  ./LineFollower_simulator_nrt -n x4_0 -t x4 ...
     68}}}
    5669
    5770== Not installing the toolchains in default location ==