常见问题:
- 交叉编译Qt程序的原理没理清
- Qt的库和Qt的qmake、rcc、moc等工具没有设置好
- Qt的版本宿主机和目标机不一致
针对以上问题1:
Qt应用程序的交叉编译,其原理是通过宿主机上可执行的Qt相关工具程序(比如moc、rcc等),在编译时生成中间文件和资源文件,最终打包成Qt应用程序,但是该应用程序所依赖的Qt动态库又必须是目标机的(动态库必须是ARM aarch64架构的)。
针对以上问题2:给环境变量PATH中必须设置本地Qt可执行文件的路径(也就是Qt的bin目录),这样才能找到moc、rcc等执行相关的操作,也就是说qmake、moc、rcc等在交叉编译是用的工具,必须是x86_64架构的。
针对以上问题3:由于在交叉编译Qt应用程序是,用到了本地的Qt相关工具程序,所以在链接时,最好保持本地的Qt版本和目标机的Qt版本一直(也就是编译时的Qt版本和运行时的Qt版本保持一致)。
总结以上问题:如果在cmake中设置了找库路径,则需要将目标机的Qt的lib库拷贝到设置的路径中,如果在cmake中没有设置找库路径,则有个粗暴的方法,就是将本地的Qt中lib目录换成目标机的lib,确保本地的Qt的bin目录中可执行文件都是x86_64架构,lib目录中的库文件都是ARM aarch64架构的。
网友评论