天天看点

实现一个跨平台的mysock库(windows、linux)源代码下载 1.首先确定自己的操作系统为32位还是64位: 2.编写测试程序: 3.跨平台代码分析



root@bfq:~/mysock# uname -a

linux bfq 3.11.0-26-generic#45~precise1-ubuntu smp tue jul 15 04:02:35 utc 2014x86_64x86_64 x86_64 gnu/linux

root@bfq:~/mysock# vim test.c

编译、执行:

root@bfq:~/mysock# gcc test.c

root@bfq:~/mysock# file a.out

a.out: elf64-bitlsb executable, x86-64, version 1 (sysv), dynamically linked (uses sharedlibs), for gnu/linux 2.6.24,buildid[sha1]=0x69d02236045c81b597e24cb143cfca5909987b80,

not stripped

root@bfq:~/mysock# ./a.out

sizeof(char *)=8

root@bfq:~/mysock# gcc test.c-m32

a.out: elf32-bitlsb executable, intel 80386, version 1 (sysv), dynamically linked (uses sharedlibs), for gnu/linux 2.6.24,buildid[sha1]=0x668431a373c94667857a83c2d92929e8b57cff58,

sizeof(char *)=4

 使用-m32来使得gcc编译32位程序(在x86_64系统上),使用-m elf_i386参数可以使得64位的ld能够兼容32位的库 

编译:

root@bfq:~/mysock#ls

libmysock64.so makefile-lib32 makefile-lib64  makefile-win mysock.c  mysock.h

root@bfq:~/mysock#make -f makefile-lib32

gcc-wall -d__unix -g -m32 -fpic -o mysock.o -c mysock.c

gcc -m32 -shared -o libmysock32.so mysock.o

root@bfq:~/mysock#file libmysock32.so

libmysock32.so:elf32-bit lsb shared object, intel 80386,version 1 (sysv), dynamically linked,buildid[sha1]=0x18b8a6de746679cccfb10306d6bc62955e3566f4,

root@bfq:~/mysock#

root@bfq:~/mysock#make -f makefile-lib64

gcc-wall -d__unix -g -fpic -o mysock.o -c mysock.c

gcc-shared -o libmysock64.so mysock.o

libmysock64.so makefile-lib32 makefile-lib64  makefile-win mysock.c  mysock.h mysock.o

root@bfq:~/mysock#file libmysock64.so

libmysock64.so:elf64-bit lsb shared object, x86-64, version 1(sysv), dynamically linked,buildid[sha1]=0xbec5736775c33f27fe81e88c98f1c26a1edf97b9,

源码结构:

linux

实现一个跨平台的mysock库(windows、linux)源代码下载 1.首先确定自己的操作系统为32位还是64位: 2.编写测试程序: 3.跨平台代码分析

windows

实现一个跨平台的mysock库(windows、linux)源代码下载 1.首先确定自己的操作系统为32位还是64位: 2.编写测试程序: 3.跨平台代码分析

各种平台的makefile

利用vs开发工具本身可以编译出lib和dll。

实现一个跨平台的mysock库(windows、linux)源代码下载 1.首先确定自己的操作系统为32位还是64位: 2.编写测试程序: 3.跨平台代码分析
实现一个跨平台的mysock库(windows、linux)源代码下载 1.首先确定自己的操作系统为32位还是64位: 2.编写测试程序: 3.跨平台代码分析

mysock.h

mysock.c

继续阅读