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

博主在Ubuntu上为ARM路由器进行交叉编译和链接时,遇到找不到 -lpopt 的错误,即便设置环境变量 LIBRARY_PATH、LD_LIBRARY_PATH 和 PATH 也无济于事,复制 libpopt.so 文件到 Ubuntu 同样无效。最终解决方案是在 Makefile 中用 -L 指定库路径,且使用目标架构版本的 libpopt.so。

Im trying to cross-compile and link aggregate on ubuntu for my arm-router and I get the following error. In the past I think I have been able to workaround this by setting the appropriate environment variable but this time is not working . Can anyone help me figure out why this might not work:

/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

however libpopt.so exists in :

lrwxrwxrwx 1 root root 34 Sep 10 12:46 /lib/x86_64-linux-gnu/libpopt.so -> /lib/x86_64-linux-gnu/libpopt.so.0

I set the following environment variables , in order of desperation, to no avail.

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

Thinking that it might be caused because it might be a target architecture issue (ie maybe i need libpopt.so built for the target of the cross-compile) I copied the libpopt.so from the router to my ubuntu and set the paths again. Again to no avail.

What might I be doing wrong?

Thanks

解决方案

I had to specify the path to the lib using -L in the Makefile as follows:

-L/lib/x86_64-linux-gnu/

additionally I did have to use the target arhchitecture version of libpopt.so which i copied into a new dir and used that in the argument to -L/home/Downloads/lib/. For whatever reason LIBRARY_PATH and LD_LIBRARY_PATH were not being picked up.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值