【问题标题】:Jetson toolchain folder structure and libgomp linker error when cross-compiling交叉编译时Jetson工具链文件夹结构和libgomp链接器错误
【发布时间】:2018-05-03 13:38:38
【问题描述】:

所以我在 Docker 容器中使用 NVIDIA 的 Jetson 工具链。

工具链似乎有这样的文件夹结构:

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

嵌套目录包含三个 lib 目录。我可以编译我的库,例如BoostPCL 很好,但将 PCL 链接到我的应用程序给出:

/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'

图书馆那里:

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

我刚刚提取了工具链压缩包并将 CMake SYSROOT 设置为封闭的sysroot。我仍然想知道它是否应该是这样使用的。例如,我应该将libgomp.so.1 和其他库从它们当前的位置移动到sysroot 目录吗?

让链接器在这里找到libgomp.so.1的正确方法是什么?

【问题讨论】:

  • 在 sysroot 之外有链接器(install/aarch64-unknown-linux-gnu/bin/ld)看起来很可疑。您是否尝试过将install/aarch64-unknown-linux-gnu 用作 sysroot?

标签: c++ docker cmake linker nvidia-jetson


【解决方案1】:

我最终通过将/install/aarch64-unknown-linux-gnu/lib64 移动到/install/aarch64-unknown-linux-gnu/sysroot/ 下解决了这个问题。不确定这是否 100% 正确,但现在所有内容都可以很好地编译和链接。

【讨论】:

    猜你喜欢
    • 2011-04-17
    • 2016-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-05
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多