You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

移植客户端至树莓派遇MySQL函数未定义引用链接错误求助

迁移MariaDB客户端到树莓派时的编译链接错误问题

迁移背景

  • 原运行环境:openSUSE 13.2(Harlequin)i586架构,搭载Ver 15.1 Distrib 10.0.27-MariaDB(适配Linux i686,使用readline 5.2)
  • 目标环境:树莓派,运行Raspbian GNU/Linux 11(bullseye)32位系统,搭载Ver 15.1 Distrib 10.5.15-MariaDB(适配debian-linux-gnueabihf armv8l,使用EditLine wrapper)

编译命令

沿用旧机器的编译命令,仅将-L/usr/lib64改为-L/usr/lib:

gcc -o scan -L/usr/lib -lmysqlclient -lz -ldl -lm -lpthread -lssl -lcrypto -I/usr/include/mysql -I/usr/include/mysql/mariadb -std=c99  -g -Wfatal-errors scan.c

出现的链接错误

编译时触发大量未定义引用错误,具体如下:

usr/bin/ld: /tmp/ccTqpyuX.o: in function `get_mappings':
/home/nigel/scan.c:218: undefined reference to `mysql_init'
/usr/bin/ld: /home/nigel/scan.c:218: undefined reference to `mysql_real_connect'
/usr/bin/ld: /home/nigel/scan.c:220: undefined reference to `mysql_select_db'
/usr/bin/ld: /home/nigel/scan.c:222: undefined reference to `mysql_close'
/usr/bin/ld: /home/nigel/scan.c:229: undefined reference to `mysql_close'
/usr/bin/ld: /home/nigel/scan.c:233: undefined reference to `mysql_query'
/usr/bin/ld: /home/nigel/scan.c:235: undefined reference to `mysql_store_result'
/usr/bin/ld: /home/nigel/scan.c:237: undefined reference to `mysql_num_rows'
/usr/bin/ld: /home/nigel/scan.c:240: undefined reference to `mysql_fetch_field'
/usr/bin/ld: /home/nigel/scan.c:244: undefined reference to `mysql_fetch_row'
/usr/bin/ld: /home/nigel/scan.c:268: undefined reference to `mysql_free_result'
/usr/bin/ld: /home/nigel/scan.c:271: undefined reference to `mysql_close'
/usr/bin/ld: /tmp/ccTqpyuX.o: in function `create_SQL':
/home/nigel/scan.c:506: undefined reference to `mysql_init'
/usr/bin/ld: /home/nigel/scan.c:506: undefined reference to `mysql_real_connect'
/usr/bin/ld: /home/nigel/scan.c:508: undefined reference to `mysql_select_db'
/usr/bin/ld: /home/nigel/scan.c:512: undefined reference to `mysql_close'
/usr/bin/ld: /home/nigel/scan.c:519: undefined reference to `mysql_error'
/usr/bin/ld: /home/nigel/scan.c:520: undefined reference to `mysql_close'
/usr/bin/ld: /home/nigel/scan.c:524: undefined reference to `mysql_query'
/usr/bin/ld: /home/nigel/scan.c:526: undefined reference to `mysql_store_result'
/usr/bin/ld: /home/nigel/scan.c:527: undefined reference to `mysql_free_result'
/usr/bin/ld: /home/nigel/scan.c:550: undefined reference to `mysql_query'
/usr/bin/ld: /home/nigel/scan.c:552: undefined reference to `mysql_store_result'
/usr/bin/ld: /home/nigel/scan.c:553: undefined reference to `mysql_free_result'
/usr/bin/ld: /home/nigel/scan.c:561: undefined reference to `mysql_close'
collect2: error: ld returned 1 exit status

已尝试的操作与疑问

  • 原本认为MariaDB是MySQL的直接替代品,库链接标签应该通用,但实际出现错误
  • 尝试将链接参数-lmysqlclient替换为-lmariadb-client,问题依旧
  • 该程序用于扫描房屋周边I/O并更新数据库,希望得到解决帮助

内容的提问来源于stack exchange,提问作者Nigel W Johnson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 07:33:16