⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000003.htm

📁 水木社区 embeded 版精华区 下载
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<?xml version="1.0" encoding="gb2312"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>讨论讨论free的交叉编译器的问题吧!     turbolinux </title></head><body><center><h1>BBS 水木清华站∶精华区</h1></center><a name="top"></a>发信人:&nbsp;specialpig&nbsp;(草草◎走过去◎走过来),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;讨论讨论free的交叉编译器的问题吧!&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Sat&nbsp;Jan&nbsp;19&nbsp;21:45:57&nbsp;2002)&nbsp;<br />&nbsp;<br />发在这个应该没有错吧?呵呵&nbsp;<br />&nbsp;<br />各位大侠好!我以前没有学过多少编译的知识,最近对嵌入式感兴趣,苦于组里&nbsp;<br />没有买过编译器,于是开始尝试free的交叉编译器,由于基础太差,干起来感觉&nbsp;<br />非常吃力,水木上看了好久,也几乎没有这方面的文章。我想把我做过的都写出&nbsp;<br />来,遇到的问题很多,请各位大侠指点,我愿意花时间在这方面做尝试,但请各&nbsp;<br />位给详细的指些路子出来!谢谢!&nbsp;<br />&nbsp;<br />做free的东西,当然是gcc,开发板是一块68332的板子&nbsp;<br />&nbsp;<br />(一)我首先上网搜来了ashware公司做的交叉编译的gcc——GccAshware.exe,&nbsp;<br />是个压缩包,打开以后,把系统的环境PATH设置一下就行了(该公司网站的解释)&nbsp;<br />98和2000下都可以用,是在windows下模拟linux的部分环境,可以在command中&nbsp;<br />使用ls等命令,make文件和ld文件都要自己写。&nbsp;<br />&nbsp;我自己写了一个Hello&nbsp;World的C,试图用它编译,make文件如下:&nbsp;<br />——————————————————————————————————&nbsp;<br />CC&nbsp;=&nbsp;m68k-coff-gcc&nbsp;<br />CXX&nbsp;=&nbsp;m68k-coff-g++&nbsp;<br />LINKER_SCRIPT=bcc.ld&nbsp;<br />CFLAGS&nbsp;=&nbsp;-m68000&nbsp;-O4&nbsp;-fomit-frame-pointer&nbsp;<br />LDFLAGS&nbsp;=&nbsp;-m68000&nbsp;-Wl,-s&nbsp;-Wl,-n&nbsp;-T$(LINKER_SCRIPT)&nbsp;-Wl,-Map=$(basename&nbsp;$<a href="mailto:@).m">@).m</a>&nbsp;<br />ap&nbsp;<br />all:&nbsp;hello.x&nbsp;<br />hello.o:&nbsp;hello.c&nbsp;<br />&nbsp;$(CC)&nbsp;$(CFLAGS)&nbsp;-Wall&nbsp;-ansi&nbsp;$&lt;&nbsp;-c&nbsp;-o&nbsp;$@&nbsp;<br />hello.x:&nbsp;hello.o&nbsp;<br />&nbsp;$(CC)&nbsp;$(LDFLAGS)&nbsp;-o&nbsp;$@&nbsp;$&lt;&nbsp;<br />———————————————————————————————————&nbsp;<br />其中这个bcc.ld文件是,lib里面自己带的,文件头如下:&nbsp;<br />/*STARTUP(crt0.o)*/&nbsp;<br />OUTPUT_ARCH(m68k)&nbsp;<br />/*&nbsp;Uncomment&nbsp;this&nbsp;if&nbsp;you&nbsp;want&nbsp;srecords.&nbsp;This&nbsp;is&nbsp;needed&nbsp;for&nbsp;a.out&nbsp;<br />&nbsp;*&nbsp;if&nbsp;you&nbsp;plan&nbsp;to&nbsp;use&nbsp;GDB.*/&nbsp;<br />OUTPUT_FORMAT(srec)&nbsp;<br />SEARCH_DIR(.)&nbsp;<br />GROUP(-lbcc&nbsp;-lc&nbsp;-lgcc)&nbsp;<br />__DYNAMIC&nbsp;&nbsp;=&nbsp;&nbsp;1;&nbsp;<br />&nbsp;<br />下面就是板子上的ram等的地址设置,其中第一句话本来没有注释掉,但每次编译的&nbsp;<br />时候都报这个错:&nbsp;<br />&nbsp;<br />\gcc-m68k-ashware\m68k-coff\lib\m68000\crt0.o:/source/egcs-1.1.2/libgloss/m6&nbsp;<br />8k/c&nbsp;<br />rt0.S:16:&nbsp;multiple&nbsp;definition&nbsp;of&nbsp;`start'&nbsp;<br />crt0.o:/source/egcs-1.1.2/libgloss/m68k/crt0.S:16:&nbsp;first&nbsp;defined&nbsp;here&nbsp;<br />collect2:&nbsp;ld&nbsp;returned&nbsp;1&nbsp;exit&nbsp;status&nbsp;<br />MAKE.EXE:&nbsp;***&nbsp;[hello.x]&nbsp;Error&nbsp;1&nbsp;<br />&nbsp;<br />后来我把第一句话注释掉后编译通过,下载到开发板上可以运行,但是执行文件&nbsp;<br />非常大,71K,光下载就搞了半天。再怎样把编译结果变小,我就没办法了,&nbsp;<br />&nbsp;<br />1)为什么链接结果这么大?这是不是和动态链接和静态链接什么的有关系?&nbsp;<br />2)我想能不能把lib库精简一下来精简程序,可是,我可以把libc.a解开包,&nbsp;<br />&nbsp;&nbsp;&nbsp;但是我不知道如何按照自己的需要进行打包,另外,我的这个想法可行么?&nbsp;<br />&nbsp;&nbsp;&nbsp;请大侠指点,如何能把编译结果变小?在链接库上做文章对不对?&nbsp;<br />3)我可以把.o文件用objdump转化成汇编,可是这样做的汇编程序无法再编成.o文件&nbsp;<br />&nbsp;&nbsp;&nbsp;有什么好方法么?&nbsp;<br />(crt0.o后来经询问邵老师知道,是开发板的初始和程序退出代码,因为我的板上有监&nbsp;<br />控程序,所以可以正常运行)&nbsp;<br />&nbsp;<br />(二)使用cygwin,也是网上的,由于我发现其文档和例子的pdf和前面那个几乎一样&nbsp;<br />就没有在上面花多少功夫&nbsp;<br />&nbsp;<br />(三)uClinux的交叉编译器,关于uClinux本身,我就是一头雾水。&nbsp;<br />经人指点,从uClinux.org找来uClinux的m68k-elf-gcc二进制代码压缩包,在Redhat7.2下&nbsp;<br />解压缩,然后设置好PATH,重新login,m68k-elf-gcc可以执行,编译没有任何函数的文&nbsp;<br />件可以完成(只有一个加法运算,可是也有19k大了),后尝试在程序中使用printf、&nbsp;<br />getc、putc、puts等函数,编译失败。编译过程如下:&nbsp;<br />————————&nbsp;<br />[root@localhost&nbsp;autobeef]#&nbsp;m68k-elf-gcc&nbsp;-lc&nbsp;-lio&nbsp;test.c&nbsp;-o&nbsp;test.s&nbsp;<br />/tmp/ccvVJk54.o:&nbsp;In&nbsp;function&nbsp;`main':&nbsp;<br />/tmp/ccvVJk54.o(.text+0x12):&nbsp;undefined&nbsp;reference&nbsp;to&nbsp;`puts'&nbsp;<br />collect2:&nbsp;ld&nbsp;returned&nbsp;1&nbsp;exit&nbsp;status&nbsp;<br />——————————————&nbsp;<br />没有ld文件是不完整,可是-lc有效果,为什么-lio就没有用呢?(我找过了,&nbsp;<br />lib里面有libio.a库包)后来我用objcopy看了一下,libc.a里面就有putc.o等库文件&nbsp;<br />我该怎么处理才能搞定这个问题呢?另外如果就这么做下来,看样子执行文件也小不了,&nbsp;<br />我应该再怎么弄一下呢?&nbsp;<br />&nbsp;<br />Redhat7.2是版本高了点,可是我是直接当来的二进制代码,又不用编译,&nbsp;<br />应该不是系统和原来gcc版本的问题吧?&nbsp;<br />&nbsp;<br />以上问题见笑了,可是写了好半天,请各位大侠帮我想想办法,谢谢各位了!&nbsp;<br />&nbsp;<br />--&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;((`'-&quot;``&quot;&quot;-'`))&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;(&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;&nbsp;&nbsp;(o&nbsp;_&nbsp;o)&nbsp;&nbsp;&nbsp;\&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\&nbsp;&nbsp;&nbsp;&nbsp;(&nbsp;0&nbsp;)&nbsp;&nbsp;&nbsp;&nbsp;/&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_'-.._'='_..-'_&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/`;#'#'#.-.#'#'#;`\&nbsp;<br />&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;166.111.51.16]&nbsp;<br />发信人:&nbsp;c1&nbsp;(牛皮),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;讨论讨论free的交叉编译器的问题吧!&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Mon&nbsp;Jan&nbsp;21&nbsp;09:28:17&nbsp;2002)&nbsp;<br />&nbsp;<br />看来我们的兴趣是一样的,我也曾今问过许多人但都是不太清楚。&nbsp;<br />我自己使用的是SINGLE&nbsp;STEP的编译连接调试器,做了一些有关68332&nbsp;<br />的开发,我一直想找免费的编译连接调试器,也试着使用过GCC,GDB&nbsp;<br />(在CYGWIN上),不过最终没有成功,很抱歉发表此文不能帮你解决&nbsp;<br />问题,但是我真的很希望大家多关注一下这方面的技术,有免费的&nbsp;<br />而且性能也很不错,我们为什么不用?为什么要将白花花的银子给老外?&nbsp;<br />如果有人是这方面的专家也请大家互相帮助,我先谢了。&nbsp;<br />&nbsp;<br />【&nbsp;在&nbsp;specialpig&nbsp;(草草◎走过去◎走过来)&nbsp;的大作中提到:&nbsp;】&nbsp;<br />∶<i>&nbsp;发在这个应该没有错吧?呵呵&nbsp;</i><br />∶<i>&nbsp;各位大侠好!我以前没有学过多少编译的知识,最近对嵌入式感兴趣,苦于组里&nbsp;</i><br />∶<i>&nbsp;没有买过编译器,于是开始尝试free的交叉编译器,由于基础太差,干起来感觉&nbsp;</i><br />∶<i>&nbsp;非常吃力,水木上看了好久,也几乎没有这方面的文章。我想把我做过的都写出&nbsp;</i><br />∶<i>&nbsp;来,遇到的问题很多,请各位大侠指点,我愿意花时间在这方面做尝试,但请各&nbsp;</i><br />∶<i>&nbsp;位给详细的指些路子出来!谢谢!&nbsp;</i><br />∶<i>&nbsp;做free的东西,当然是gcc,开发板是一块68332的板子&nbsp;</i><br />∶<i>&nbsp;(一)我首先上网搜来了ashware公司做的交叉编译的gcc——GccAshware.exe,&nbsp;</i><br />∶<i>&nbsp;是个压缩包,打开以后,把系统的环境PATH设置一下就行了(该公司网站的解释)&nbsp;</i><br />∶<i>&nbsp;98和2000下都可以用,是在windows下模拟linux的部分环境,可以在command中&nbsp;</i><br />∶<i>&nbsp;使用ls等命令,make文件和ld文件都要自己写。&nbsp;</i><br />∶<i>&nbsp;...................&nbsp;</i><br />&nbsp;<br />--&nbsp;<br />&nbsp;<br />※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;smth.org·[FROM:&nbsp;211.71.69.23]&nbsp;<br />发信人:&nbsp;specialpig&nbsp;(草草◎走过去◎走过来),&nbsp;信区:&nbsp;Embedded&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;讨论讨论free的交叉编译器的问题吧!&nbsp;<br />发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Mon&nbsp;Jan&nbsp;21&nbsp;11:02:42&nbsp;2002)&nbsp;<br />&nbsp;<br />我把文章转到饮水思源上去试一试!&nbsp;<br />【&nbsp;在&nbsp;c1&nbsp;(牛皮)&nbsp;的大作中提到:&nbsp;】&nbsp;<br />∶<i>&nbsp;看来我们的兴趣是一样的,我也曾今问过许多人但都是不太清楚。&nbsp;</i><br />∶<i>&nbsp;我自己使用的是SINGLE&nbsp;STEP的编译连接调试器,做了一些有关68332&nbsp;</i><br />∶<i>&nbsp;的开发,我一直想找免费的编译连接调试器,也试着使用过GCC,GDB&nbsp;</i><br />∶<i>&nbsp;(在CYGWIN上),不过最终没有成功,很抱歉发表此文不能帮你解决&nbsp;</i><br />∶<i>&nbsp;问题,但是我真的很希望大家多关注一下这方面的技术,有免费的&nbsp;</i><br />∶<i>&nbsp;而且性能也很不错,我们为什么不用?为什么要将白花花的银子给老外?&nbsp;</i><br />∶<i>&nbsp;如果有人是这方面的专家也请大家互相帮助,我先谢了。&nbsp;</i><br />&nbsp;<br />

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -