交叉编译为什么不能找到共享库/如何进一步调试?

我试图在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都没有被选中。