我试图在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 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并设置路径又来了。再无济于事。
我可能做错了什么?
由于
答案 0 :(得分:3)
请不要将ARM二进制文件复制到/ lib / x86_64 -linux-gnu。这是弄乱Linux安装的好方法。
相反,为交叉编译依赖项创建一个目录,将外部库放在那里,并使用-L
选项将该目录放在链接器搜索路径上。
答案 1 :(得分:-1)
我必须在Makefile中使用-L指定lib的路径,如下所示: -L / LIB / x86_64的-Linux的GNU /
另外我做了必须使用libpopt.so的目标arhchitecture版本,我将其复制到一个新的目录中并在-L / home / Downloads / lib /的参数中使用它。无论出于何种原因,LIBRARY_PATH和LD_LIBRARY_PATH都没有被选中。