引自免费微信小程序:皆我百晓生
从您提供的报错信息来看,编译过程中遇到了两个未定义的引用:statx
和 renameat2
。这通常意味着编译器在链接阶段没有找到提供这些函数的库。这两个函数是Linux内核提供的,用于更高级别的文件操作。
解决这个问题,你需要确保链接了包含这些函数的库。对于statx
,它可能在libc
的某个特定版本中引入,而对于renameat2
,这个函数是在glibc 2.26中引入的。因此,检查您的buildroot环境中的glibc版本是否足够新,以及是否正确链接了库。
针对您的情况,可以尝试以下几个步骤来解决问题:
-
检查glibc版本: 运行命令确认glibc版本:
arm-buildroot-linux-gnueabihf-gcc --print-file-name=libgcc.a | xargs readelf -d | grep GLIBC_2.26
如果输出结果中包含了
GLIBC_2.26
,那么恭喜,你的glibc版本足够新。如果没有,可能需要升级buildroot环境中的glibc。 -
确保链接了正确的库: 在
qmake.conf
文件中添加相应的链接选项,强制链接可能缺失的库。在文件末尾添加以下内容:LIBS += -lrt -ldl
-
更新构建脚本: 在
autoConfigure.sh
中,添加额外的链接选项,确保链接到rt
和dl
库:./configure \ ... -L/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib \ -Wl,-rpath=/usr/arm-buildroot-linux-gnueabihf/sysroot/usr/lib \ -lrt -ldl
-
重新运行构建过程: 删除已有的构建产物,清理并重新开始构建:
make clean ./autoConfigure.sh make -j$(nproc)
如果上述步骤还不能解决问题,建议检查您的系统中是否有其他影响链接的设置,比如环境变量或链接顺序。如果问题依然存在,可能需要进一步分析编译器的链接选项和系统库路径,或者联系更专业的嵌入式开发社区寻求帮助。