编译libiio出错

编译libiio出错

warning: libusb-1.0.so.0, needed by ../lib/libiio.so, not found (try using -rpath or -rpath-link)

添加依赖库

这是因为在编译时,libiio.so动态链接了libusb库,ld时找不到相应的库导致错误。

  • 在编译主机上新建一个目录如lib,将libiio依赖的库复制到lib中
    上面命令可以一键复制
    ldd /lib/arm-linux-gnueabihf/libiio.so| awk -F " " ‘{print $3}’|xargs -t -i cp {} .
    其中awk表示取出依赖库的路径
    xargs -t 表示打印命令 -i表示将xargs的每一项,一行一行的赋给后面的{}
  • 编译时在LDFLAGS中加入: -Wl,-rpath …/lib
    其中-Wl,-rpath …/lib表示依赖的库从…/lib中找
    使用-L…/lib是不管用的。

cmake传递编译命令

cmake -DCMAKE_CXX_COMPILER=arm-linux-gnueabi-g++ …

编译程序

arm-linux-gnueabihf-g++ -o do do.cpp -liio -I…/include -Wl,-rpath=…/lib

用qemu-arm运行程序

sudo apt install qemu-user
qemu-arm -L /usr/arm-linux-gnueabihf/ ./do

### 对 `libiio` 进行交叉编译 为了对 `libiio` 库进行交叉编译,可以遵循一系列特定的操作流程。这些操作不仅适用于一般的库文件,也特别适合于嵌入式开发环境中的应用。 #### 准备工作 确保已经安装了合适的交叉编译工具链。对于 ARM 架构的目标平台,通常会选择 Linaro 提供的工具链版本之一。例如,在命令中可以看到使用的是 `arm-linux-gnueabihf-gcc` 编译器[^1]。这表明目标架构为支持硬浮点ABI (Application Binary Interface) 的ARM处理器。 #### 获取源码 下载最新的 `libiio` 源代码包。可以从官方GitHub仓库获取最新稳定版或指定版本标签下的压缩包。解压后进入对应的目录准备配置构建过程。 #### 配置构建选项 在执行实际编译前,需通过运行 configure 脚本来设置必要的参数以适应不同的硬件平台需求: ```bash ./bootstrap.sh # 如果存在此脚本,则先初始化项目结构 mkdir build && cd build ../configure \ --host=arm-linux-gnueabihf \ --build=x86_64-pc-linux-gnu \ --prefix=/usr/local \ CC="arm-linux-gnueabihf-gcc" \ CXX="arm-linux-gnueabihf-g++" ``` 这里指定了主机(host)为目标体系结构(`arm-linux-gnueabihf`)以及当前机器(build)的信息;同时设置了安装路径(prefix),并显式定义了C/C++编译器名称以便正确调用交叉编译工具链。 #### 执行编译与安装 完成上述准备工作之后就可以开始正式编译了: ```bash make -j$(nproc) DESTDIR=$HOME/staging make install ``` 第一条指令利用多线程加速编译速度(-j 参数后面跟上可用CPU核心数),第二条则是在本地临时根目录下模拟最终系统的布局来进行安装动作,这样做的好处是可以方便后续打包或者测试验证。 #### 测试验证 最后一步是对生成的结果进行功能性和兼容性的检测。可以通过编写简单的应用程序来加载动态链接库(.so 文件), 或者直接尝试运行一些依赖该库的应用实例来看看是否存在任何问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值