Chinaunix首页 | 论坛 | 博客
  • 博客访问: 465666
  • 博文数量: 85
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 32
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-13 13:49
文章分类

全部博文(85)

文章存档

2018年(1)

2014年(40)

2013年(44)

分类: C/C++

2013-04-16 10:48:35

原文地址:cygwin使用技巧 作者:crook

这里记录一些自己总结的cygwin使用技巧。
 
有关cygwin配置试用的链接:
 
 
1。把CYGWIN_ROOT/bin目录加到windows PATH目录下。
如果你想在windows cmd里面使用cygwin下的各种命令,例如gcc,make,touch等, 包括在cmd下面运行用gcc编译好的exe程序。
 
2。gcc编译问题。
cygwin的gcc工具实际上是个交叉编译器,可以产生windows下能运行的exe程序。通常编译出来的程序,在windows下运行依赖cygwin1.dll,如果不想依赖,编译选项加上 -mno-cygwin
 
举个例子:
 
 

$cat hello.c
#include <stdio.h>

int main(int argc, char** argv)
{
        printf("Hello, world!\n");
        return 0;
}

$gcc -o hello hello.c

e390977@ch71DT4nwhz1x /home/ray/c++
$./hello.exe
Hello, world!

$objdump.exe -p hello.exe | grep "DLL Name"
        DLL Name: cygwin1.dll
        DLL Name: KERNEL32.dll

$gcc -mno-cygwin -o hello hello.c

$objdump.exe -p hello.exe | grep "DLL Name"
        DLL Name: msvcrt.dll
        DLL Name: KERNEL32.dll

显然加上-mno-cygwin 参数后,就没有依赖cygwin1.dll

3.如何生成 coredump 文件?
在cygwin shell下 export CYGWIN='error_start=D:\cygwin\bin\dumper.exe'

error_start:Win32filepath - if set, runs Win32filepath when cygwin encounters a fatal error, which is useful for debugging. Win32filepath is usually set to the path to gdb or dumper, for example C:\cygwin\bin\gdb.exe. There is no default set.

具体参见:《 Cygwin User's Guide》第三章-Using Cygwin--The CYGWIN environment variable.

4. cygwin包管理工具cygcheck

cygcheck -f Package -- Find the package that FIELS belong to

cygcheck -l Package -- List content of package

cygcheck -p Package -- Search for REGEXP in the entire cygwin.com  package repositoyy

 
5. 解决 "fatal error - unable to remap" 问题

在Cygwin中开发Rails,有时候需要执行SH命令,而这些命令调用DLL时经常会遇到类似的错误提示:

 [main] ruby 4208 C:\cygwin\bin\ruby.exe: *** fatal error - unable to remap C:\cygwin\bin\cygssl-0.9.8.dll to
same address as parent(0×340000) != 0×4730000
 [main] ruby 1752 fork: child 4208 - died waiting for dll loading, errno 11

具体原因不大清楚,解决方法如下:

MS-DOS CMD到Cygwin的bin路径下,执行ash命令,或者直接run这个命令;

在ash提示符后面运行/bin/rebaseall,注意要输入完整,如果只输入rebaseall,会提示找不到这个命令,而且这个命令只能在ash下面执行,不能在Cygwin下面执行。

现在打开Cygwin,应该一切正常了。

Perl的情况也一样。

6. cygwin: WARNING: terminal is not fully functional

打开vim的时候,出现这个警告,查看下TERM,居然TERM=dump, 原因未知。

解决方案: 修改export TERM=cygwin, 或者在windows下删除这个TERM环境变量。

7. cygwin代理问题

添加一个环境变量即可 export http_proxy=proxy_hostname:port

该方法是用于 wget, git等

8. git代理问题

添加http.proxy变量到~/.gitconfig 即:

[http]
    proxy==proxy_hostname:port

 
阅读(2537) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~