免费注册 查看新帖 |

Chinaunix

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

Cygwin编译gcc的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-06-14 09:04 |只看该作者 |倒序浏览
由于自己的一个小内核项目的需要,我要编译一个交叉编译的GCC,目前我已经在Cygwin上成功编译了binutils和gcc-core(我先编译本地的,再编译交叉的)。但是编译生成的可执行文件依赖于Cygwin的dll文件,这个问题应该如何解决呢?怎样静态编译?

还有,ld程序的库搜索目录是好像是预先设定好了的,而且好像是绝对路径,我该如何改成相对路径呢?加什么选项?我认为MinGW编译出来后都可以放到任何目录下面,它肯定使用的是相对路径来让ld查找库文件。我该如何做?


Thanks in advance!!!

论坛徽章:
0
2 [报告]
发表于 2009-06-14 12:08 |只看该作者
三个字:做不到。
Cygwin 的核心就是那个 DLL。
怀疑你生成交叉编译环境的时候没有用正确的选项。把完整的 configure 命令贴上来?



[ 本帖最后由 langue 于 2009-6-14 12:10 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-06-14 13:54 |只看该作者

论坛徽章:
0
4 [报告]
发表于 2009-06-16 14:33 |只看该作者
嘿嘿,感谢!

我的配置如下:
D:\Koala>gcc -v
Using built-in specs.
Configured with: ../gcc-3.4.6/configure --prefix=/CCC --target=i386-elf --disabl
e-nls --enable-languages=c --without-headers
Thread model: single
gcc version 3.4.6

我已经成功地用Cygwin编译了目标为i386-elf的gcc,目前把Cygwin的dll拷贝着一起才能运行。

纠正一下二楼的兄弟的话,我找到了Cygwin的gcc有一个选项-mno-cygwin,通过它生成的exe程序可以独立于cygwin运行,比如:
gcc -o ts.exe main.c
    这个ts.exe得配合cygwin1.dll才能运行。
gcc -mno-cygwin -o ts.exe main.c
    这个ts.ext则不需要。

但是这里是使用gcc命令的时候添加的-mno-cygwin选项,而configue出来后则是直接使用make命令,应该如何添加命令呢?

当我想给cygwin配置出来的Makefile中的CFLAGS或者CC两个变量添加这个选项,来达到独立的效果的时候,编译过程产生了错误。
即:
原来      CC = gcc
我手动改为CC == gcc -mno-cygwin
嘿嘿,出错了。错误忘了是什么?目前我将就着使用依赖于cygwin1.dll的版本。等有更好的方法的时候再来改正。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP