0

So I'm using NVIDIA's Jetson toolchain in a Docker container.

The toolchain seems to have a folder structure like this:

gcc-4.8.5-aarch64
    install
        aarch-unknown-linux-gnu
            bin
            include
            lib
            lib64
            sysroot
                etc
                lib
                sbin
                usr
                var
        bin
        include
        lib
        libexec
        share

There are nested directories with three lib dirs. I can compile my libraries e.g. Boost and PCL just fine but linking PCL to my application gives:

/install/bin/../lib/gcc/aarch64-unknown-linux-gnu/4.8.5/../../../..
    /aarch64-unknown-linux-gnu/bin/ld: warning: libgomp.so.1, needed by 
    /install/aarch64-unknown-linux-gnu/sysroot/lib/libpcl_common.so, not 
    found (try using -rpath or -rpath-link)
/install/aarch64-unknown-linux-gnu/sysroot/lib/libpcl_common.so: undefined reference to `GOMP_loop_dynamic_next@GOMP_1.0'

The library is there:

./gcc-4.8.5-aarch64/install/aarch64-unknown-linux-gnu/lib64/libgomp.so.1

I have just extracted the toolchain tarball and set CMake SYSROOT to the enclosed sysroot. I'm still wondering if that's how it's supposed to by used. Should I, for example, move libgomp.so.1 and other libraries from their current locations to the sysroot dir?

What is the correct way to make linker find libgomp.so.1 here?

juzzlin
  • 45,029
  • 5
  • 38
  • 50
  • Having linker outside of sysroot (at `install/aarch64-unknown-linux-gnu/bin/ld`) looks suspicious. Have you tried to use `install/aarch64-unknown-linux-gnu` as sysroot? – Tsyvarev May 03 '18 at 14:17

1 Answers1

0

I eventually solved this by moving /install/aarch64-unknown-linux-gnu/lib64 under /install/aarch64-unknown-linux-gnu/sysroot/. Not sure if that's 100% right, but everything now compiles and links beautifully.

juzzlin
  • 45,029
  • 5
  • 38
  • 50