在Linux下用QT编写的程序怎么在ARM上运行?
1.想要在开发板上运行,你需要移植QTE.添加arm-linux-交叉编译工具链.把原有的工程交叉编译生产开发板上可以运行的程序.把可执行程序和QTE库考到开发板上.再改一下环境变量就ok了.2.用Qt Creator啊.
树莓派下怎样运行移植的QT程序?
你可以参考SQLiteStudio这个Qt写的跨平台SQLite管理工具,它自己打包了依赖的Qt库,可以做到解压即用,兼容不同Linux发行版.道理其实跟Windows版Qt程序自带Qt库差不多.
编译前给连接器传一个参数:
说明:
-Wl 表示告诉编译器将后面的参数传递给链接器.
rpath是gcc的一个参数,当程序被加载时,会搜寻rpath目录,寻找共享库.
rpath添加的目录信息保存在可执行文件中.
$ORIGIN表示可执行文件所在的目录.
也就是运行时程序会先去自己所在的目录的lib里去加载依赖库,没有的话再去系统库里找.
如果你的程序在编译时没有传递rpath参数,那你也可以用patchelf来修改你程序的rpath:
注意:patchelf修改文件后再strip会导致文件损坏.
所以应该先用strip删除符号表缩小二进制文件,然后再用patchelf设置rpath.
题外话,Android上既没有glibc库,也没有库链接器ld-linux.so.3.
如果你要把Debian ARM(如树莓派Raspbian)上的软件放到Android上跑,你一样可以打包程序依赖的共享库,让程序也能跑在Android上,比如PHP:
也就是你把库链接器ld-linux-armhf.so.3和PHP依赖的库都放到/data/local/tmp/web/lib里,然后设置个别名,就能在Android的adb shell里运行树莓派的PHP了.
当然,你也可以用patchelf设置PHP的interpreter和rpath,效果差不多:
如何在ARMLinux环境中搭建QT运行环境?
1、可以2、QtCreator只是一个集成开发工具,这个版本随意,网上下就可以,Qte不是用最新,而是最好用跟你在Linux开台开发一样的。首先要在Linux下交叉编译Qte的库,然后再将Lib这些文件移植在板子上,最后通过交叉编译好的库去编译你在pc
ARM开源吗?
开源。
在云、AI、5G等新技术加持的新时代,底层芯片的多样化架构成为计算产业发展的重要方向。基于Arm架构的芯片不仅在各种智能设备上被广泛应用,还在数据中心、云计算、5G网络及边缘产品等应用领域持续发力,今年下半年阿里巴巴、AWS等国内外公有云头部企业纷纷发布最新的基于Arm架构的自研芯片,为云计算市场提供了多样性的算力选择。如此强劲的市场势头,除了Arm自身的低功耗与高性能的IP技术优势,对软件生态系统的广泛支撑更是功不可没。为了给软件开发者带来更好的开发体验,围绕Arm Neoverse平台,Arm在开源以及云原生等软件生态系统方面做了很多工作。
“虽然Arm Neoverse平台才推出三年,但我们在软件生态系统预先做的铺垫工作已经累积长达十余年,这也是造就Neoverse一推出就能在基础设施市场上取得佳绩的原因之一。”Arm基础设施事业部全球副总裁邹挺在接受采访时向《中国电子报》记者表示,Arm在开源社区长期且持续投入,在目前市场主流的Linux发行系统中都可以见到Arm的身影,基于Arm架构的开源项目与云原生开发项目的数量也处于行业领先地位。
是硬件公司但也深耕软件领域
根据Arm最新的统计数据,基于Arm架构的芯片出货量已经累积突破2000亿颗,第一个1000亿颗用了26年达成,但第二个1000亿颗仅用了短短4年时间,展现Arm架构在计算产业的新应用趋势下受到热捧。在巨大市场机会与大规模应用的背后,是Arm在软件生态系统的深度积累与长期投入的成果。
邹挺向《中国电子报》记者表示,为了保证基于Arm架构的系统能够安全处理全球共享的数字数据,确保所有软件都能在基于Arm架构的硬件上顺利运行,Arm有近半数的工程师正在从事与软件开发和工程相关的工作,包括创建编译器和驱动程序,优化客户和开发人员在基于Arm架构系统上的体验。
“在Armv8时代的第一个十年,光是Arm软件开发人员所投入的研发时间,就超过了1000万人时。在Armv9时代的第一个十年,Arm软件开发人员的投入时间大概率会超过3000万人时。”邹挺对记者表示,如果把针对Arm生态系统的研发投入也计算在内,软件开发人员的投入时间将超过15亿人时。
致力于让软件开发体验顺畅
延续一贯的核心运营理念,Arm在包括云计算的基础设施领域,也采用“软硬兼顾”的战略,以高性能、高效率的IP技术为核心,与产业伙伴合作进行工艺制程与EDA工具的优化,通过十余年持续投入,获得了开源与商业软件生态的广大支持,构成完整的Neoverse平台与生态。邹挺告诉记者,在以平台的概念持续大规模的投入下,Arm基础设施生态系统具备灵活和创新的特点,吸引了腾讯、阿里云等国内互联网头部企业,在基于Arm架构的软件上不断优化项目,进行“点对点”合作。
为了向软件开发人员提供流畅的云原生开发体验,促进硬件标准化就显得重要,为此Arm推出了Project Cassini,计划通过建立平台标准和参考实例,为构建安全的服务器、边缘网关和其他数据聚合设备搭建框架,并针对云原生的软件栈进行优化,以解决云原生生态系统带来的多样化挑战。邹挺告诉记者,整个生态系统的参与并不仅限于芯片供应商和ODM厂商等硬件公司,众多OEM厂商、云服务提供商和其他关键软件供应商现也在全力参与Project Cassini。
Project Cassini倡导的“标准化”是通过Arm SystemReady计划所推动的。邹挺表示,可扩展、“开箱即用”的蓝图是实现软件大规模部署的关键。为了让软硬件进行无缝集成,让各种操作系统、应用软件能在基于Arm架构的边缘设备上实现无缝“开箱即用”,Arm在ServerReady方案的基础上又推出了SystemReady,以覆盖更广泛的市场和操作系统。
“除红帽、VMWare和Windows之外,现在使用Arm SystemReady的其他商用操作系统还包括Debian、Fedora、OpenSuse和Yocto Linux。”邹挺对记者说。
积极参与开源项目激发创新潜能,创造产业共赢
“支持开源软件社区及其驱动的创新对于Arm生态系统的持续发展至关重要。”邹挺向《中国电子报》记者表示,通过Arm长期在开源社区与开源项目的持续投入,基于Arm开源生态,很多开源社区都在蓬勃发展并且日益繁荣。
据悉,Arm在多个Linux相关的基金会长期扮演技术推进的积极角色,并且在2010年携手生态伙伴一起发起Linaro开源组织。随着Linaro在多项基于Arm架构的Linux应用领域参与投入,Arm对开源软件的支持力度持续加大。
此外,在Linux基金会的一个项目——云原生计算基金会(CNCF)中,Arm以白金会员的身份活跃于社区活动。而过去许多初期由Arm推动的开源项目,现在也都能自给自足。邹挺指出,随着软件开发者加速在云原生软件的开发,目前基于Arm硬件的持续集成/持续交付(CI/CD)的构建时数每月超过100万分钟,在Docker Hub上为Arm架构编写的容器镜像数量超过10万个。
面对中国开源生态的蓬勃发展,Arm也积极开展与中国开源社区的互动与交流。邹挺向记者表示,为了让中国的云原生软件,特别是本土化的云原生软件,能够在Arm架构上更快速运行,Arm积极参与中国的开源组织、社区或项目,将Arm的专业技术与在开源社区长期累积的经验,贡献于中国开源社区。
TARS、openEuler(欧拉社区)和OpenAnolis(龙蜥社区)都是由中国厂商领头、充满活力的开源社区与项目。邹挺表示,在这几大开源社区与项目的建设过程中,TARS微服务开发框架已成功移植至Arm CPU架构;Arm作为龙蜥社区的理事单位,也正与龙蜥社区并肩合作,共同推动基于Arm架构的软硬一体协同演进、相关功能实现和性能优化,并协助龙蜥社区在社区治理模式、开发管理流程、版本发布等领域进行持续改进。
“开源是不分国界的,Arm在开源生态系统中正在扮演‘桥梁’的角色。”邹挺对记者坦言,一方面,Arm希望把全球优秀的开源项目带到中国,让这些项目在中国市场和生态系统中落地生根;另一方面,Arm希望把中国场景带到全球开源社区,集聚全球开发者的智慧,共同实现开源蓝图,齐力激发技术创新的潜能,共创产业双赢。