无心插柳-在vs2005中编译GCC4
来源:互联网 发布:数据分析师 编辑:程序博客网 时间:2024/06/09 13:45
前一阵子,一直在研究Visual DSP与uclinux的二进制兼容问题,一个偶然的机会看到了blackfin.uclinux.org上的一段话:
Blackfin patch: Delete code to handle certain relocs
- From: Bernd Schmidt <bernds_cb1 at t-online dot de>
- To: binutils at sources dot redhat dot com
- Date: Sat, 25 Mar 2006 19:20:15 +0100
- Subject: Blackfin patch: Delete code to handle certain relocs
The Blackfin port has some ancient code that was written for compatibility with the in-house VDSP compiler. We support a relocation stack, so that you can encode arbitrary arithmetic in relocations.
呵呵,原来如此!
为了完成一个长久的心愿,看来还得费点劲把链接器的这些代码找出来再做些修改才行,估计ld的代码应该也不是特别复杂。
不过长时间在linux和windows之间切换,总觉得不爽。结果就是将ld搞到vs2005下编译了一道。事已至此,又冒出一个想法,不知道gcc是否也可以在vs2005下编译,这样研究起来岂非简单很多。(典型的见异思迁!!)
又经过一段时间,终于搞定!聊记下来以供以后参考!当然,此处仅仅是一个c compiler而已,不包含libc这样的东西。
bfin-gcc-4.1
首先在linux平台下切换到gcc4.1源码的目录:
./configure
make
这样除了生成可执行文件之外,还会生成很多动态的.c和.h文件,因为在windows平台下这些文件可是很难生成的呦,也没有必要在这些枝节上费工夫。把这些文件都copy到windows下备用。.c和.h文件,当然是可以用到工程中去的,至于.o文件,则是很直观地揭示了工程中应该包含的文件,总比分析Makefile来得容易!
下面就该到vs2005上场了。
针对gcc的几个目录建了相应的lib,在这样做之前其实也不知道为什么,就是看见在每个目录下都生成了一个config.h文件。
再建了一个叫gcc4的exe工程。
也不知道应该加入什么文件,由少到多吧,先加入main,链接器提示少什么再往里加!就是再这样的原则下,最多的时候大概有600个链接错误,最后借助链接器和.o文件的帮助,统统杀无赦,最后就得到了一个gcc4.exe。
写个最简单的C程序试一个:
void main(void)
{
}
运行gcc4 main.c,生成了一个main.s:
.file "main.c"
.text
.globl main
.type main, @function
main:
leal 4(%esp), %ecx
andl $-16, %esp
pushl -4(%ecx)
pushl %ebp
movl %esp, %ebp
pushl %ecx
popl %ecx
leave
leal -4(%ecx), %esp
ret
.size main, .-main
.ident "GCC: (GNU) 4.1 2008-1-10 release 2007"
.section .note.GNU-stack,"",@progbits
386的代码,不是希望的bf561!
看来是后端生成代码这一块搞错了,研究中…..
- 无心插柳-在vs2005中编译GCC4
- 源于无心插柳 - Nuva (女娲) 语言的由来
- JMSN 起步,无心插柳,反成荫
- 有心栽花和无心插柳
- 在VS2005中编译luabind
- 无心插柳:喜获SOA圈博大精深博客奖
- 有心栽花与无心插柳之叹
- 无心插柳OR志在必得?阿里推“来往”的意图
- 世上哪来那么多的无心插柳
- 在centos编译gcc4.7
- 在centos编译gcc4.7
- Ubuntu中编译GCC4.9.0
- Strata北京大会现场对话Hadoop之父Doug Cutting: Hadoop是无心插柳的惊喜,其在AI时代仍有想象力
- 在vs2005编译环境中显示行号
- DirectShow在VS2005中编译问题汇总
- 在centos编译gcc4.7[转]
- 在centos编译gcc4.7(转)
- 在CentOS 6.3编译gcc4.7.2
- 创业,却发现自己过于愚蠢
- MySQL可靠性方案分析与比较
- 遗传算法
- 期待。。。
- IIS中图片无法浏览的问题
- 无心插柳-在vs2005中编译GCC4
- lex bison
- 程序员读懂“新劳法” 敢问公司“谁怕谁”(1)
- Javascript学习--进度条
- Java IDE实用对比:Eclipse、NetBeans、IntelliJ
- 宽屏 WARCRAFT III 全屏的方法
- FSO属性
- Server Application Error解决
- c#连接oracle