免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4154 | 回复: 11
打印 上一主题 下一主题

[C] 求教个arm-linux-gcc的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-15 18:48 |只看该作者 |倒序浏览
/****改了下标题,原来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 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-05-15 19:04 |只看该作者
是不是我想偏了,导致这个问题不着边际?哪位大人指点下啊...

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
3 [报告]
发表于 2008-05-15 19:18 |只看该作者
最后烧到flash里?你是说嵌入式?

论坛徽章:
0
4 [报告]
发表于 2008-05-15 19:24 |只看该作者
原帖由 wliang511 于 2008-5-15 18:48 发表
1。现在一般的大型程序,比如那些商用程序,好象没有main()函数啊(或者有,一般看不到?),为什么不会报错呢,那这些程序的入口函数又是怎么设定的呢?


你有见过没有main()函数的c/c++程序可以运行??!

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
5 [报告]
发表于 2008-05-15 19:44 |只看该作者
原帖由 chinaljj 于 2008-5-15 19:24 发表


你有见过没有main()函数的c/c++程序可以运行??!

这个当然是可以了,只不过你自己需要在 linker/loader 上做手脚。

论坛徽章:
0
6 [报告]
发表于 2008-05-15 20:18 |只看该作者
原帖由 chinaljj 于 2008-5-15 19:24 发表


你有见过没有main()函数的c/c++程序可以运行??!



   见过啊,原来用C做的项目都没见到过main(),我的理解是:每个应用程序是不是都有个象main()一样的入口函数呢?如果是,那么在哪个地方可以把这个函数设定为入口函数?如果不是,那我的理解就完全错了,问的问题就真的是不着边际了,原来写程序的时候,只关心应用层,,真是报应。

[ 本帖最后由 wliang511 于 2008-5-15 20:19 编辑 ]

论坛徽章:
0
7 [报告]
发表于 2008-05-15 20:19 |只看该作者
原帖由 MMMIX 于 2008-5-15 19:44 发表

这个当然是可以了,只不过你自己需要在 linker/loader 上做手脚。


请问这个是在哪里呢?有没相关资料可以查?

论坛徽章:
0
8 [报告]
发表于 2008-05-15 20:22 |只看该作者
原帖由 cjaizss 于 2008-5-15 19:18 发表
最后烧到flash里?你是说嵌入式?



是的。机顶盒,linux环境,刚接触,太多不懂了。

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
9 [报告]
发表于 2008-05-15 20:50 |只看该作者
linux?应用程序自然要用main(C语言标准)来做入口,想方设法不用man做入口的,那我实在不知道开发者把心思用到什么地方去了。要么是就是驱动,bootloader,kernel.

论坛徽章:
0
10 [报告]
发表于 2008-05-15 21:48 |只看该作者
不知道楼主在说什么
嵌入式里要用arm-linux-gcc编译吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP