建设电影会员网站首页,西宁网站建设君博正规,软件工程考研科目,珠海网站系统建设arm64屏上跑armhf程序
起因#xff1a;我们之前给客户的屏是armhf的#xff0c;由于性能问题需要升级#xff0c;现在提供给他们的屏是arm64的。 客户之前在armhf环境开发时花钱买了armhf版本的第三方的静态库使用#xff0c; 现在升级用arm64的话又得花钱买arm64版本的库…arm64屏上跑armhf程序
起因我们之前给客户的屏是armhf的由于性能问题需要升级现在提供给他们的屏是arm64的。 客户之前在armhf环境开发时花钱买了armhf版本的第三方的静态库使用 现在升级用arm64的话又得花钱买arm64版本的库据说挺贵的客户不想重新花钱买 问我们能不能在arm64环境继续使用armhf版本的第三方静态库。
思路由于arm64是兼容armhf的即armv8兼容armv7所以理论上客户可以直接编译它们的程序直接在arm64上的屏上运行类似windows一样64位的兼容32位的。
所以我们直接还是使用原来的armhf编译链编译程序并连接第三方静态库 然后放到我们arm64的屏上面跑结果报错no find Directory根本跑不起来。
排查原因我们屏上面没有armv7的环境和动态库好比win64位的电脑只有64位的库没有32位的库
解决办法
使用静态编译即编译的时候加上-static 参数, 即armhf-linux-g -static main.c -lotherdrm 缺点编译出来的可执行程序很大但是不需要依赖其他动态库将armv7环境sys-rootfs拷贝到arm64上面准备一套armv7的环境缺点整套armv7环境占用空间较大磁盘空间所以最终否决决定使用静态编译方案