无法动态链接库
-
已经把工具链中 lib64xthead 上传到开发板并加入路径
vector_example项目的makefile
在d1上运行vector_example时(可以在qemu-riscv64中正常运行),如果链接时不加 -static,就会出现下面这样的提示:
添加 -static 可以在d1上正常运行:
当然我自己的程序也无法运行,出现一样的问题。所以如何让程序正确的调用链接库呢?
-
readelf 可以看到需要使用的库,此库也可以在/lib下找到
嵌入式小白只能走到这了,跪求解答 -
请问你用的是 tina sdk 里面自带的 gcc编译器吗?
-
报错的时候好像有动态库的 路径提示 照着路径提示放进去试试看可以吗,还有交叉编译链里的 lib 好像是给交叉编译链用的 板子上用的动态库在 sysroot 目录
-
@whycan 平头哥900系列工具链的gcc
-
-
@bedrock 如图,只提示 not found。我已经把工具链sysroot里lib64vxthead放在板子的根目录了。
-
@harry89 我看到你的 not found 没有提示 具体的???
-
@memory 找到问题了,我用的平头哥工具链里库的版本太新了,和tina linux里lib的软连接对不上
-
@bedrock 如果是自己的程序要链接就会提示了。。但是我把这个库放到/lib还是根目录下都不好使。。 这会是什么情况?
-
@harry89 应该是还有其它so没有一起拷过去。
-
-
@harry89 libmindspore-lite.so 还依赖其它lib吗?
-
@harry89 在qemu运行平头哥gcc怎么玩? 我以前测试是段错误,后来就放弃了,求教程。
-
@tigger 我这里可以直接运行,顶多加一个运行时库的路径或者环境变量。不知道你是在什么情况下出问题?
-
@memory 依赖的lib都可以找到,和libmindspore-lite.so需要同样依赖库的程序可以正常运行。
-
@tigger 对了,我用的是平头哥官网提供的qemu
-
@harry89 请教你用哪个 qemu 版本, 哪里下载安装的呢?
-
-
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 自带这个版本编译, 应该没有问题。
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号