导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    无法动态链接库

    MR Series
    5
    20
    4378
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Harry89
      Harry89 LV 4 最后由 编辑

      已经把工具链中 lib64xthead 上传到开发板并加入路径
      08bb7a54-c9d9-4cc3-8ab4-903755159982-image.png
      vector_example项目的makefile
      22ce8123-68fc-4f27-9c48-05049e5cc9d9-image.png
      在d1上运行vector_example时(可以在qemu-riscv64中正常运行),如果链接时不加 -static,就会出现下面这样的提示:
      06f84827-f6fb-49ae-a6f2-2c02d1e9023b-image.png

      添加 -static 可以在d1上正常运行:
      d13444da-7f8e-4950-89b7-75e362e3bfbf-image.png
      当然我自己的程序也无法运行,出现一样的问题。

      所以如何让程序正确的调用链接库呢?

      1 条回复 最后回复 回复 引用 分享 0
      • Harry89
        Harry89 LV 4 最后由 编辑

        readelf 可以看到需要使用的库,此库也可以在/lib下找到
        78a8b444-cafd-46c6-b493-568e0248ca93-image.png
        f456e09e-ceb8-44cd-bc8c-6dca7c28f747-image.png
        嵌入式小白只能走到这了,跪求解答🤕

        1 条回复 最后回复 回复 引用 分享 0
        • whycan
          whycan晕哥 LV 9 最后由 编辑

          请问你用的是 tina sdk 里面自带的 gcc编译器吗?

          Harry89 1 条回复 最后回复 回复 引用 分享 0
          • BedRock
            BedRock LV 6 最后由 编辑

            报错的时候好像有动态库的 路径提示 照着路径提示放进去试试看可以吗,还有交叉编译链里的 lib 好像是给交叉编译链用的 板子上用的动态库在 sysroot 目录

            Harry89 1 条回复 最后回复 回复 引用 分享 0
            • Harry89
              Harry89 LV 4 @whycan 最后由 编辑

              @whycan 平头哥900系列工具链的gcc

              M 1 条回复 最后回复 回复 引用 分享 0
              • M
                memory LV 7 @Harry89 最后由 编辑

                @harry89 在 无法动态链接库 中说:

                @whycan 平头哥900系列工具链的gcc

                用平头哥其它版本gcc本身没有问题, 但是要连同C库和其它依赖库一起拷贝到文件系统才行。所以还是老老实实用tian sdk里面自带的gcc吧。

                Harry89 1 条回复 最后回复 回复 引用 分享 0
                • Harry89
                  Harry89 LV 4 @BedRock 最后由 编辑

                  @bedrock 如图,只提示 not found。我已经把工具链sysroot里lib64vxthead放在板子的根目录了。

                  BedRock 1 条回复 最后回复 回复 引用 分享 0
                  • BedRock
                    BedRock LV 6 @Harry89 最后由 编辑

                    @harry89 我看到你的 not found 没有提示 具体的???🤒

                    Harry89 1 条回复 最后回复 回复 引用 分享 0
                    • Harry89
                      Harry89 LV 4 @memory 最后由 编辑

                      @memory 找到问题了,我用的平头哥工具链里库的版本太新了,和tina linux里lib的软连接对不上 🤤

                      1 条回复 最后回复 回复 引用 分享 0
                      • Harry89
                        Harry89 LV 4 @BedRock 最后由 编辑

                        @bedrock 如果是自己的程序要链接就会提示了。。但是我把这个库放到/lib还是根目录下都不好使。。 这会是什么情况?
                        cb64c700-f77c-49d5-9dda-b7dc63b31725-image.png
                        7b81158d-6732-4af6-9892-3606fe73bfb4-image.png

                        M 2 条回复 最后回复 回复 引用 分享 0
                        • M
                          memory LV 7 @Harry89 最后由 编辑

                          @harry89 应该是还有其它so没有一起拷过去。

                          Harry89 1 条回复 最后回复 回复 引用 分享 0
                          • Harry89
                            Harry89 LV 4 @memory 最后由 编辑

                            @memory 但是只有缺少了楼上图片中那个 特定.so 的会报错。无论是把这个.so拷到/lib下,还是指定ld_library_path都不好使。qemu下如果不指定这个.so文件的路径也是一样的报错,指定ld_library_path就没问题。

                            tigger 1 条回复 最后回复 回复 引用 分享 0
                            • M
                              memory LV 7 @Harry89 最后由 编辑

                              @harry89 libmindspore-lite.so 还依赖其它lib吗?

                              Harry89 1 条回复 最后回复 回复 引用 分享 0
                              • tigger
                                tigger LV 7 @Harry89 最后由 编辑

                                @harry89 在qemu运行平头哥gcc怎么玩? 我以前测试是段错误,后来就放弃了,求教程。

                                Harry89 2 条回复 最后回复 回复 引用 分享 0
                                • Harry89
                                  Harry89 LV 4 @tigger 最后由 编辑

                                  @tigger 我这里可以直接运行,顶多加一个运行时库的路径或者环境变量。不知道你是在什么情况下出问题?

                                  tigger 1 条回复 最后回复 回复 引用 分享 0
                                  • Harry89
                                    Harry89 LV 4 @memory 最后由 编辑

                                    @memory 依赖的lib都可以找到,和libmindspore-lite.so需要同样依赖库的程序可以正常运行。

                                    1 条回复 最后回复 回复 引用 分享 0
                                    • Harry89
                                      Harry89 LV 4 @tigger 最后由 编辑

                                      @tigger 对了,我用的是平头哥官网提供的qemu🤣

                                      tigger 1 条回复 最后回复 回复 引用 分享 0
                                      • tigger
                                        tigger LV 7 @Harry89 最后由 编辑

                                        @harry89 请教你用哪个 qemu 版本, 哪里下载安装的呢?

                                        1 条回复 最后回复 回复 引用 分享 0
                                        • tigger
                                          tigger LV 7 @Harry89 最后由 编辑

                                          @harry89 怪不得怪不得,

                                          https://occ.t-head.cn/community/download?id=636946310057951232

                                          是这个 V3.2.0 版本吗?

                                          1 条回复 最后回复 回复 引用 分享 0
                                          • M
                                            memory LV 7 最后由 编辑

                                            prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-gcc

                                            $ prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-gcc -v
                                            Using built-in specs.
                                            COLLECT_GCC=prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/riscv64-unknown-linux-gnu-gcc
                                            COLLECT_LTO_WRAPPER=/opt/D1/tina_d1_open/prebuilt/gcc/linux-x86/riscv/toolchain-thead-glibc/riscv64-glibc-gcc-thead_20200702/bin/../libexec/gcc/riscv64-unknown-linux-gnu/8.1.0/lto-wrapper
                                            Target: riscv64-unknown-linux-gnu
                                            Configured with: /ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/build/../source/riscv/riscv-gcc/configure --target=riscv64-unknown-linux-gnu --with-mpc=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/lib-for-gcc-x86_64-linux/ --with-mpfr=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/lib-for-gcc-x86_64-linux/ --with-gmp=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/lib-for-gcc-x86_64-linux/ --prefix=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/install --with-sysroot=/ldhome/software/toolsbuild/slave/workspace/riscv64_build_linux_x86_64/install/sysroot --with-system-zlib --enable-shared --enable-tls --enable-languages=c,c++,fortran --disable-libmudflap --disable-libssp --disable-libquadmath --disable-nls --disable-bootstrap --src=../../source/riscv/riscv-gcc --enable-checking=yes --with-pkgversion='C-SKY RISCV Tools V1.8.4 B20200702' --enable-multilib --with-abi=lp64d --with-arch=rv64gcxthead 'CFLAGS_FOR_TARGET=-O2  -mcmodel=medany' 'CXXFLAGS_FOR_TARGET=-O2  -mcmodel=medany' CC=gcc CXX=g++
                                            Thread model: posix
                                            gcc version 8.1.0 (C-SKY RISCV Tools V1.8.4 B20200702)
                                            

                                            感觉你用d1 sdk 自带这个版本编译, 应该没有问题。

                                            1 条回复 最后回复 回复 引用 分享 0
                                            • 1 / 1
                                            • First post
                                              Last post

                                            Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

                                            行为准则 | 用户协议 | 隐私权政策