Cygwin是一个GNU在Windows上的模拟环境,功能强大,广泛应用于嵌入式Linux应用开发,配合eclipse+CDT可以构建功能强大的嵌入式软件开发平台。Cygwin的原理是通过一个共享库Cygwin1.dll来屏蔽Windows的API,使得GNU可以工作在Windows之上,而不用对GNU工具的源码进行修改。
但是,由于windows和linux的文件系统和内核机制的差异,在使用动态库的时候,需要做一些小小的改动。
实例:
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文件即可。