主题 : 嵌入式linux入门选手,问个问题,不要笑我 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 11916
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
综合积分: 38 分
注册时间: 2009-12-24
最后登录: 2010-03-26
楼主  发表于: 2010-03-03 11:13

 嵌入式linux入门选手,问个问题,不要笑我

    我以前是在windows下面做嵌入式的,最近学习linux。原来做的arm使用ADS编辑,编译的,很多个c文件生成一个bin文件,编译的时候可以一起编译,请问各位在linux有没有类似的编译软件?
  目前看到的demo板的sdk包,都是一个main文件一个小程序实现单个具体的功能,linux下面有没有想ads这样的编译器,有一个main文件入口,编译若干个c文件,最后生成一个bin文件?


对于这个很不惑,想了好几天了,没有弄明白,请路过的给指点一下,或者给个相关的文档也行。
级别: 侠客
UID: 5728
精华: 1
发帖: 92
金钱: 785 两
威望: 572 点
综合积分: 204 分
注册时间: 2009-05-06
最后登录: 2017-09-13
1楼  发表于: 2010-03-03 11:43
我这个小菜来交流一下?linux下你只要象平常做程序一样就行了,例如:有个source.c文件,用相应的编译器(arm-linux-gcc等)编译一下,再copy到板上,就可以运行了。我就是把mini2440当成电脑一样用的,前些天还把debian装上去用了,真得意啊~~~
级别: 新手上路
UID: 11916
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
综合积分: 38 分
注册时间: 2009-12-24
最后登录: 2010-03-26
2楼  发表于: 2010-03-03 11:52
单个的小程序,我知道怎么做,但是譬如用ADS做的大程序,实现很多功能的程序,有很多h文件和c文件组成的,在计算机的linux怎么编译,就不明白了.
级别: 侠客
UID: 5728
精华: 1
发帖: 92
金钱: 785 两
威望: 572 点
综合积分: 204 分
注册时间: 2009-05-06
最后登录: 2017-09-13
3楼  发表于: 2010-03-03 12:03
makefile啊。你是习惯了win下那些全自动化的方式了,其实过程一样的,linux下你要明白原理和过程,你可以上网查查makefile  automake等就明白了。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
4楼  发表于: 2010-03-03 12:04

 回 2楼(kikisunjian) 的帖子

多个源文件和单个源文件做法是一样的。
1)每个源文件经过交叉编译器(arm-linux-gcc)编译生成.o文件,
2)然后由链接器(arm-linux-ld)将这些.o文件按照一个特定的链接脚本链接成ELF格式的执行档,
3)最后由arm-linux-objcopy将ELF执行档中用来运行程序所必须的程序段(比如代码段和数据段)复制出来生成二进制档(.bin文件),就可以下载到NAND Flash或SDRAM中运行了。
VIVI和U-Boot就是这种程序的例子。

其实ADS本身也就是这么干的,ADS生成的AXF文件就是ELF格式的执行档。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 5728
精华: 1
发帖: 92
金钱: 785 两
威望: 572 点
综合积分: 204 分
注册时间: 2009-05-06
最后登录: 2017-09-13
5楼  发表于: 2010-03-03 12:08
还是版主回答得清楚明白,看,这就是高手与小白回答问题的不同了。很想知道版主是哪高就的高手,有这样的同事真好啊。
级别: 新手上路
UID: 11916
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
综合积分: 38 分
注册时间: 2009-12-24
最后登录: 2010-03-26
6楼  发表于: 2010-03-03 14:31
明白了大家的意思了,看了Makefile的编写方法了,还有个问题想问一下,Makefile的各个c文件,每个文件是不是都要有自己的main函数?
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
7楼  发表于: 2010-03-03 15:09
引用第6楼kikisunjian于2010-03-03 14:31发表的  :
明白了大家的意思了,看了Makefile的编写方法了,还有个问题想问一下,Makefile的各个c文件,每个文件是不是都要有自己的main函数?

不一定,一般一个工程只有一个main函数,但makefile可以包含多个工程,那就可以有多个main了。

多多实践。
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 11916
精华: 0
发帖: 19
金钱: 95 两
威望: 19 点
综合积分: 38 分
注册时间: 2009-12-24
最后登录: 2010-03-26
8楼  发表于: 2010-03-03 15:35
Makefile一次可以编译,多个含有main函数的工程吗?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
9楼  发表于: 2010-03-03 22:23
引用第8楼kikisunjian于2010-03-03 15:35发表的  :
Makefile一次可以编译,多个含有main函数的工程吗?

可以。搞清楚一个概念,Makefile不是用来编译的。Makefile只是定义了一套实现目标的规则,而这个目标可以是从一个或多个工程编译出你想要的东西。
事实上,ADS里的编译过程也是基于Makefile的。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."