我试图在ubuntu上为我的arm-router交叉编译和链接聚合,我得到以下错误。 在过去,我认为我已经能够通过设置适当的环境变量来解决这个问题,但这次没有用。 任何人都可以帮我弄清楚为什么这可能不起作用:
/home/ubuntu/Downloads/toolchain-arm_cortex-a9_gcc-4.9-linaro_musl-1.1.2_eabi/bin/../lib64/gcc/arm-openwrt-linux-muslgnueabi/4.9.1/../../../../arm-openwrt-linux-muslgnueabi/bin/ld:
cannot find -lpopt
但是libpopt.so存在于:lrwxrwxrwx lrwxrwxrwx 1 root root 34 Sep 10 12:46 /lib/x86_64-linux-gnu/libpopt.so -> /lib/x86_64-linux-gnu/libpopt.so.0
我按照绝望的顺序设置以下环境变量无济于事。
LIBRARY_PATH=/lib/x86_64-linux-gnu/ LD_LIBRARY_PATH=/lib/x86_64-linux-gnu/ PATH=/lib/x86_64-linux-gnu/:/usr/include/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
认为它可能是因为它可能是目标架构问题(也许我需要为交叉编译的目标构建libpopt.so)而导致我将libpopt.so从路由器复制到我的ubuntu并再次设置路径。 再无济于事。
我可能做错了什么?
谢谢
请不要将ARM二进制文件复制到/ lib / x86_64 -linux-gnu中。 这是弄乱Linux安装的好方法。
相反,为交叉编译依赖项创建一个目录,将外部库放在那里,并使用-L
选项将该目录放在链接器搜索路径上。
我必须在Makefile中使用-L指定lib的路径,如下所示:-L / lib / x86_64-linux-gnu /
另外,我确实必须使用目标arhchitecture版本的libpopt.so,我将其复制到一个新的目录中并在-L / home / Downloads / lib /的参数中使用它。 无论出于何种原因,LIBRARY_PATH和LD_LIBRARY_PATH都没有被选中。
以上就是c/c++开发分享交叉编译为什么不能找到共享库/如何进一步调试?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/523303.html