尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

libmodbus在Ubuntu 22.04上按arm64架构编译方法

libmodbus在Ubuntu 22.04上按arm64架构编译方法 注意libmodbus仓库迁移使用github的连接拉取源码失败需要使用gitee的URLgit clone https://gitee.com/mirrors/libmodbus.git版本3.2.0从NEWS.md中查看libmodbus/NEWS.mdlibmodbus 3.2.0 (2026-07-02)1. 安装依赖工具确保系统已安装automake、autoconf、libtool和ARM64交叉编译工具链如gcc-aarch64-linux-gnusudo apt-get update sudo apt-get install -y automake autoconf libtool gcc-aarch64-linux-gnu2. 下载libmodbus源码从官方仓库或发布页面获取源码以3.1.10版本为例wget https://libmodbus.org/releases/libmodbus-3.1.10.tar.gz tar -xzf libmodbus-3.1.10.tar.gz cd libmodbus-3.1.10或从github上拉去libmodbus源码sudo apt install git git clone https://github.com/stephane/libmodbus.git --branch v3.1.10 --depth 1 或 git clone https://github.com/stephane/libmodbus.git3. 生成构建配置仅需Git版本如果源码未包含configure脚本需运行autogen.sh生成./autogen.sh4. 配置交叉编译选项指定ARM64架构和安装路径示例路径为/opt/libmodbus_arm64./configure \ --hostaarch64-linux-gnu \ # 关键指定ARM64交叉编译工具链前缀 --prefix/opt/libmodbus_arm64 \ # 安装路径 CCaarch64-linux-gnu-gcc \ # 显式指定交叉编译器可选 CXXaarch64-linux-gnu-g5. 编译并安装make -j$(nproc) # 多线程编译 make install # 安装到指定路径6. 验证编译结果检查生成的库文件是否为ARM64架构file /opt/libmodbus_arm64/lib/libmodbus.so*预期输出/opt/libmodbus_arm64/lib/libmodbus.so: symbolic link to libmodbus.so.5.1.0 /opt/libmodbus_arm64/lib/libmodbus.so.5: symbolic link to libmodbus.so.5.1.0 /opt/libmodbus_arm64/lib/libmodbus.so.5.1.0: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]12bcbfd3bcffeb49cf349915764e6de6c3be8e36, with debug_info, not stripped7. 在ARM64设备上使用将编译生成的库文件/opt/libmodbus_arm64/lib/复制到目标设备的/usr/lib/或指定路径并在程序中链接aarch64-linux-gnu-gcc modbus_test.c -o modbus_test \ -I/opt/libmodbus_arm64/include \ -L/opt/libmodbus_arm64/lib -lmodbus ./modbus_test8.设置动态链接库并使其永久生效export LD_LIBRARY_PATH/opt/libmodbus_arm64/lib:$LD_LIBRARY_PATH echo /opt/libmodbus_arm64/lib | sudo tee /etc/ld.so.conf.d/libmodbus_arm64.conf sudo ldconfig9.在ARM64设备上测试将编译生成的库文件和头文件复制到目标设备后编写一个简单测试程序验证功能#include modbus/modbus.h #include stdio.h int main() { modbus_t *ctx modbus_new_tcp(127.0.0.1, 1502); if (ctx NULL) { fprintf(stderr, Failed to create Modbus context\n); return -1; } printf(Modbus context created successfully!\n); modbus_free(ctx); return 0; }交叉编译并运行aarch64-linux-gnu-gcc test_modbus.c -o test_modbus \ -I/opt/libmodbus_arm64/include \ -L/opt/libmodbus_arm64/lib -lmodbus # 复制到ARM64设备后运行需确保库路径正确 ./test_modbus预期输出Modbus context created successfully!
返回列表