RPath Handling
pdell-kitware opened this issue · 0 comments
pdell-kitware commented
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