移植客户端至树莓派遇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
相关产品推荐
相关产品推荐

