lark.com

火鸟乐园——生活在.net时代
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在Cygwin环境下使用动态库的方法

Posted on 2006-03-02 16:38  火鸟  阅读(1431)  评论(0编辑  收藏  举报

 

Cygwin是一个GNUWindows上的模拟环境,功能强大,广泛应用于嵌入式Linux应用开发,配合eclipse+CDT可以构建功能强大的嵌入式软件开发平台。Cygwin的原理是通过一个共享库Cygwin1.dll来屏蔽WindowsAPI,使得GNU可以工作在Windows之上,而不用对GNU工具的源码进行修改。

但是,由于windowslinux的文件系统和内核机制的差异,在使用动态库的时候,需要做一些小小的改动。

实例:

Mydll动态库提供hello()功能,

/* mydll.c */
 
#include <stdio.h>
 
int
hello()
{
  printf ("Hello World!\n");
}

Test.c使用动态库提供的hello()功能。

int 
main ()
{
  hello ();
}

 

1、 linux下使用动态库

首先将 mydll.c 编译成目标码:

gcc -c mydll.c

然后,告诉 gcc 将目标码生成动态库

gcc -shared -o libmydll.so mydll.o

然后,将动态库与测试程序连接:

gcc -o test myprog.c -L./ -lmydll

 

2、 Cygwin下使用动态库

首先将 mydll.c 编译成目标码:

gcc -c mydll.c

然后,告诉 gcc 将目标码生成动态库

gcc -shared -o mydll.dll mydll.o

然后,将动态库与测试程序连接:

gcc -o test myprog.c -L./ -lmydll

 

简而言之,就是将.so文件改成.dll文件即可。

 

参考资料:http://cygwin.com/cygwin-ug-net/dll.html