问题:
使用arm-none-linux-gnueabi-gcc –o hello hello.c编译完成,在ARM上运行出现报错:
-sh: ./hello: No such file or directory
原因:
因为我们的程序使用的是动态链接方式编译的,而ARM上的链接库文件路径不同,导致找不到文件,可以用gcc -static命令改用静态链接的方式编译:
arm-none-linux-gnueabi-gcc –o hello hello.c -static
编译器的架构有差
这是发生在一次新的开发板的交叉编译中产生的,同样的程序用同样的工具链编译后,一个开发板正常,二另一个报No such file or directory,文件明明存在,这个问题在于arm-Linux-guneabi-和arm-linux-guneabihf-这两个链的差别在于hf二字,这个是浮点单元的支持与否,选择错误会导致上述错误发生。
用uname -a查看ARM的架构和Linux版本,举例:
root@imx6qsabresd:~# uname -a
Linux imx6qsabresd 3.14.28-1.0.0_ga+g91cf351 #14 SMP PREEMPT Tue Apr 25 16:25:22 CST 2017 armv7l GNU/Linux
查看执行程序的属性,举例:
zhao@zhao-VirtualBox:/home/nfs/file/ntp$ file ntpdate
ntpdate: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped
以上的情况就无法执行,显示“No such file or directory”,然后通过更换GCC成功了。新版本:
gcc-linaro-arm-linux-gnueabihf-4.9-2014.07_linux.tar.xz
关键字:ARM 可执行程序
引用地址:
ARM上运行可执行程序出现No such file or directory的问题
推荐阅读最新更新时间:2024-03-16 15:45
总结:我的ARM嵌入式开发的六步学习法
学习ARM嵌入式开发,尤其对于初学者而言,不应该过早地、过多地将精力用在嵌入式系统移植、Linux内核的研究和学习上,这些诱人的“热点”很容易使初学者迷失方向,进而忽视对基础知识的深入学习。以下是针对Linux系统的ARM嵌入式开发学习步骤: 第一,学习基本的裸机编程 对于学硬件的人而言,必须先对硬件的基本使用方法有感性的认识,更必须深刻认识该硬件的控制方式,如果一开始就学linux系统、学移植那么只会马上就陷入一个很深的漩涡。我在刚刚开始学ARM的时候是选择ARM7(主意是当时ARM9还很贵),学ARM7的时候还是保持着学51单片机的思维,使用ADS去编程,第一个实验就是控制led。学过一段时间ARM的人都会笑这样很笨,
[单片机]
ARM指令集----杂项指令
ARM指令集可以分为6类,即是跳转指令,数据处理指令,程序状态传输指令,Load、Store指令,协处理器指令和异常中断指令 跳转指令: 在ARM中有两种方式可以实现程序的跳转,一种是跳转指令,另一种是直接向PC寄存器写入目标地址的值 通过直接向PC寄存器写入目标寄存器的数字可以实现在4GB 地址空间的任意跳转,这种跳转又称为长跳转,如果在残肢令前面使用MOV LR,PC等指令,可以保存返回来的地址值,这样就实现了在4GB空间中的子程序调用 ARM的跳转指令可以从当前指令向前或者是向后的32位的地址进行空间跳转,这类跳转指令有一下4种 B 跳转指令 BL带换回的跳转指令 BLX 带返回的跳转和切换指令
[单片机]
ARM中断处理类型
在正常的程序执行流程发生暂时的停止时,称为中断,例如,处理一个外部的中断请求。在处理异常之前,当前处理器的状态必须保留,这样当异常处理完成之后,当前程序可以继续执行。处理器允许多个异常同时发生,它们将会按固定的优先级进行处理。 中断与堆栈设置和ARM体系结构紧密相关,ARM是一种支持多任务操作的系统内核,内部结构完全适应多任务应用。ARM内核支持7种中断,不同的中断处于不同的处理模式(如表1所示),具有不同的优先级,而且每个中断都有固定的中断入口地址。当一个中断发生时,相应的R14(LR)存储中断返回地址,SPSR存储状态寄存器CPSR的值。 由于ARM内核支持流水线工作,LR寄存器存储的地址可能是发生中断处后面指令的
[单片机]
于ARM-Linux架构的远程可控电源插座设计方案
互联网的迅速发展,实现了信息的高速传输和资源共享,极大地方便了人们的生活。嵌入式系统广泛应用于各种电器产品、智能仪表和控制设备中,它与互联网的结合是一种必然的趋势。 嵌入式系统和网络技术的快速发展,为网络远程控制的发展和完善提供了技术基础。 笔者综合运用嵌入式系统和Web技术,设计了一种可通过互联网进行远程控制的电源插座系统,实现对家用或工业电器的远程实时控制。用户通过网页浏览器访问该系统,对各插座进行打开或关闭的操作,实现对与其相连接的电器的远程控制。 1 嵌入式Web工作原理 嵌入式Web的体系结构如图1所示。客户端和嵌入式系统中Web服务器之间的通信协议采用HTTP(超文本传输协议)。嵌入式操作系统提
[单片机]
基于ARM9的无线电台网络控制系统的设计与研究
1、引言
在如今的信息时代,由于人们对系统性能和成本控制要求的不断提高,嵌入式系统凭其优良的性价比和独特的便利性得到了越来越多的人们的青睐。无线电台已经由传统的模拟式向数字化演进,由孤立系统向网络互联迈进。网络技术的快速发展极大地推动了嵌入式系统的发展。
随着无线电台技术的飞速发展,越来越多的行业开始使用无线电台,因为用无线电台方式实现数据采集、监视与控制,相对于架设专用的电缆或光缆,具有造价低廉、运行可靠、维护方便等优点 。无线电台的使用从最早的按键电码、电报发展到模拟电台加无线MODEM、数字电台和DSP及软件无线电。数据传输速率从低速走到高速,传输的信号从简单代码发展到遥控遥测数据、数字化语音、动态图像
[嵌入式]
基于ARM和CPLD的温度控制器的设计
1 引言 随着计算机技术的飞速发展,在日常生活和生产中,人们要求更精确测量和控制温度等模拟物理量,不仅满足工业现场实时监控,上位PC机遥观、遥测和遥控等,而且要求连-接互联网,以实现远程监控和访问数字化、智能化的传感器功能。 这里提出一种以ARM微控制器为核心,结合CPLD技术的温度控制系统。该系统将温度传感器采集的信息A/D转换后传输至微处理器处理,其处理数据再经网络接121远程传输。或通过RS232串行接口与上位机PC机通信实现分布式温度监控系统。 2 系统硬件设计 该系统设计主要是针对工业控制领域现场仪器仪表开发的,其硬件设计框图如图1所示,该框图包括ARM微处理器、电源、监控复位、存储器扩展
[嵌入式]
ARM Cortex-A9 (tiny 4412)
要求 移植linux增加系统调用并烧写至开发板 详细步骤 一、搭建linux编译环境 1、GCC 编译器的安装: tar xzvf arm-linux-gcc-4.5.1-v6-vfp-20120301.tgz -C/ arm-linux-gcc -v //查看GCC版本 2、gedit ~/.bashrc export PATH=$PATH:/opt/FriendlyARM/toolschain/4.5.1/bin 3、reboot -p 重启 4、cp -f tiny4412_android_defconfig .config make -- 编译 5、安装libz.so yum install z
[单片机]
ARM设计的FPGA可重构配置方法的实现及应用
随着半导体工艺技术的迅猛发展,现场可编程逻辑器件FPGA的集成度迅速提高,已达到百万门量级,与此同时,FPGA中的逻辑资源也日益丰富,使得基于FPGA的片上系统设计成为可能.基于FPGA的片上系统设计因其具有开发周期短,设计成本低,软硬件可编程,系统设计灵活、可裁减、可扩充、可升级等优点正在成为电子系统设计的研究热点,且已经在通讯、工控等领域得到实际应用. 目前FPGA从实现技术上进行分类,可以分为基于查找表(LuT,k—up table)技术,SRAM工艺的FPGA、基于nash技术的FPGA和基于反熔丝(Anti—fuse)技术的FPGA,而使用最多的还是基于SRAM工艺的FPGA,如Altem的Cycl0ne和S
[单片机]