jedeschaud / ct_icp

CT-ICP: Continuous-Time LiDAR Odometry
MIT License
756 stars 130 forks source link

RPath Handling #33

Closed pdell-kitware closed 2 years ago

pdell-kitware commented 2 years ago

Problem:

After correctly building, run_odometry does not find external

The problem is that when building the CMAKE project, the path to the external shared libraries is not set in the runpath of the executable

This is a cmake problem, and can be seen when running

readelf -d run_odometry

Dynamic section at offset 0x5b7f0 contains 35 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libCT_ICP.so]
 0x0000000000000001 (NEEDED)             Shared library: [libSlamCore.so]
 0x0000000000000001 (NEEDED)             Shared library: [libglog.so.0]
 0x0000000000000001 (NEEDED)             Shared library: [libyaml-cpp.so.0.6]
 0x0000000000000001 (NEEDED)             Shared library: [libstdc++.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libm.so.6]
 0x0000000000000001 (NEEDED)             Shared library: [libgcc_s.so.1]
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000001d (RUNPATH)            Library runpath: [/home/ivizzo/dev/slam/ct_icp/install/CT_ICP/lib]
 0x000000000000000c (INIT)               0x15000
 0x000000000000000d (FINI)               0x4e0a4
 0x0000000000000019 (INIT_ARRAY)         0x5b440
 0x000000000000001b (INIT_ARRAYSZ)       24 (bytes)
 0x000000000000001a (FINI_ARRAY)         0x5b458
 0x000000000000001c (FINI_ARRAYSZ)       8 (bytes)
 0x000000006ffffef5 (GNU_HASH)           0x3b0
 0x0000000000000005 (STRTAB)             0x59c0
 0x0000000000000006 (SYMTAB)             0x1640
 0x000000000000000a (STRSZ)              43715 (bytes)
 0x000000000000000b (SYMENT)             24 (bytes)
 0x0000000000000015 (DEBUG)              0x0
 0x0000000000000003 (PLTGOT)             0x5ca60
 0x0000000000000002 (PLTRELSZ)           3984 (bytes)
 0x0000000000000014 (PLTREL)             RELA
 0x0000000000000017 (JMPREL)             0x13610
 0x0000000000000007 (RELA)               0x10b98
 0x0000000000000008 (RELASZ)             10872 (bytes)
 0x0000000000000009 (RELAENT)            24 (bytes)
 0x000000000000001e (FLAGS)              BIND_NOW
 0x000000006ffffffb (FLAGS_1)            Flags: NOW PIE
 0x000000006ffffffe (VERNEED)            0x10a28
 0x000000006fffffff (VERNEEDNUM)         4
 0x000000006ffffff0 (VERSYM)             0x10484
 0x000000006ffffff9 (RELACOUNT)          336
 0x0000000000000000 (NULL)               0x0

the line: 0x000000000000001d (RUNPATH) Library runpath: [/home/ivizzo/dev/slam/ct_icp/install/CT_ICP/lib] Should have all path to the installed shared libraries