cygwin编译的win32程序不需要cygwin1.dll库的方法(1)

来源:互联网 发布:php商城项目仓库管理 编辑:程序博客网 时间:2024/06/08 16:49

cygwin提供了在windows下使用gcc,g++编译器的方法,但是在cygwin下编译的程序,运行的时候需要cygwin1.dll库

 以下文章翻译自国外网站http://digipen2.xmmg.com/dpweb/docs/mno-cygwin.html

简单的代码(注:以下都是在cygwin环境下)

#include <stdio.h>int main(void){  printf("Hello\n");  return 0;}


编译链接如下:

gcc -Wall hello.c -o hello-cygwin.exe


使用cygcheck(cygwin tools)来看运行时依赖的库

C:\sandbox\CS120\gcc>cygcheck ./hello-cygwin.exe.\hello-cygwin.exe  C:\cygwin\bin\cygwin1.dll    C:\WINNT\system32\ADVAPI32.DLL      C:\WINNT\system32\NTDLL.DLL      C:\WINNT\system32\KERNEL32.DLL      C:\WINNT\system32\RPCRT4.DLL


编译不需要cygwin1.dll库支持的可执行文件

gcc -mno-cygwin -Wall hello.c -o hello-no_cygwin.exe


查看运行时依赖的库

C:\sandbox\CS120\gcc>cygcheck ./hello-nocygwin.exe.\hello-nocygwin.exe  C:\WINNT\system32\msvcrt.dll    C:\WINNT\system32\KERNEL32.dll      C:\WINNT\system32\ntdll.dll


可以看出不依赖cygwin1.dll了


实际上这种方法在最新版本的cygwin中已经不可用了,替代方法见

http://blog.csdn.net/simeone18/article/details/7017276

原创粉丝点击