首先你用arm-linux-gcc编译的时候,编译出来的是不能在PC机上运行的,并不是说它不是可执行文件
不论是gcc还是arm-linux-gcc,都是把c代码转换成机器码,性质是一样的,只不过,PC一般都是x86架构而arm-linux-gcc是编译成arm架构的可执行程序
首先你得指导一下交叉编译这个概念,arm-linux-gcc是一个交叉编译的gcc,用于嵌入式开发,要移植到开发板上运行,你找本关于嵌入式开发的书籍,就会对这个有比较清晰的认识了
由于CPU架构不同,针对的工作场合不同,不同的CPU有不同的指令集。编译器的作用就是把你写的代码转换为CPU可以执行的指令。用arm-linux-gcc编译之后的代码是在ARM处理器上运行的,也就是说里面包含的都是ARM指令集中的指令。而用gcc编译出来的是X86处理器上运行的,里面包含的指令时X86指令集中的指令。
arm-linux-gcc编译的是适合硬件平台的,一般我们设计嵌入式系统时在电脑上使用交叉编译编译出适合嵌入式运行的文件,编译在电脑上运行的只需要gcc命令