- 论坛徽章:
- 0
|
/****改了下标题,原来arm-linux-gcc 和 gcc是两码事,呵呵。gcc是linux下的c语言编译器,arm-linux-gcc是交叉编译,gcc编译出来的程序在本地执行 ,arm-linux-gcc编译出来的程序在目标机(ARM平台)上执行,嵌入式应该用交叉编译器(如果不是在ARM本身上开发)
第2个问题是我理解错了,其实好象都是编译成可执行文件的,只不过arm-linux-gcc编译出来的程序要到特定的硬件环境才能运行。开始我是把连接后的文件,直接在编译的硬件环境(linux/x86)下运行,结果不能运行,我就以为生成的不是可执行文件,结果拿到目标机上就可以运行了(linux/arm环境),偶实在太菜了,路漫漫。。那个啥远兮""****/
平时用gcc编译,也就知道2个步骤:
1。gcc -c 编译成目标文件
2。gcc -o 将目标文件连接成一个可以自己命名的可执行文件。
然后,就是自己编个程序,没有main()函数的话,就会在第2步的时候报错。
有2个问题:
1。现在一般的大型程序,比如那些商用程序,好象没有main()函数啊(或者有,一般看不到?),为什么不会报错呢,那这些程序的入口函数又是怎么设定的呢?
2。一般来说编译最后都是生成的2进制文件,而不是可执行文件,然后烧到FLASH里程序就可以跑了。这个2进制文件是不是直接把.s文件通过gcc -o输出到一个文件里得到的。。但是好象又链接了静态库的。
因为现在的makefile都是他们做的工具自动生成的,感觉很多地方看不到。
[ 本帖最后由 wliang511 于 2008-5-15 23:43 编辑 ] |
|