Jerasure 杂谈(一)
因为需要到Jerasure来做实验,又因为自己真的挺懒的,不想在linux下开发,又因为这套Jerasure是在Linux下用C写的,所以要跑到vs2010上也算是那么一点点伪移植的性质了
ok,这个系列都是很杂碎地记录下实验过程中,一切杂碎的不顺畅的事情,语言肯定会很随机,希望除了自己看懂也能帮到别人。
我的环境,win7 32位,vs2010,Jerasure 1.2 ,C写的,其实解压缩之后就是5个基本的头文件和5个对应的c文件,然后有一个Examples的文件夹,里面搞了好多例子来给你示范怎么用,在linux下makefile一下就能直接在命令行终端加几个参数来尝试了,这个跳过吧。
然后我想要做的事情是,把那5个h文件和c文件搞成一个我可以调用的lib,我实验所写的C++程序可以调用这个库。
第一步,下载mingw,这个东西是用来生成c文件的库的,安装好,要记得设置好系统变量的path,也就是加个C:\mingw\bin而已,这个简单,搞定后在命令行里面输入个查看版本的命令就知道有没有成功了,网上其他很多博文都写得蛮清楚的,省略过
第二步,建议你随便在某一个.h和对应的。cpp里面声明和定义一个简单的函数,比如接受一个int返回这个int的两倍这样,这样比较方便测试到底有没导入成功。然后去到那个文件夹底下,然后先把5个c文件搞成5个中间.o文件,命令:
gcc -c jerasure.c
这里有多少个文件就直接在后面跟着就可以,我懒了就不输入全了,然后,把这5个中间文件打成一个lib,命令:
ar -r jerasure_collect.lib jereasure.o cauchy.o
后面也是有多少个中间文件就接着 跟在后面写
第三步:打开你的vs2010,新建个空项目,然后把那5个cpp和5个头文件都添加进来,然后在工程的属性里面,配置属性,链接器 ,输入,附加依赖项那里,添加那个lib,对了,这个时候要把那个lib拷贝到你的工程放代码的那个目录里面,这样他才能找到的。ok,然后在你测试的那个cpp文件里面,要include进来那些头文件,因为头文件是C语言写的,所以听说要这样,反正我就是这样搞了:
extern "C" { #include "jerasure.h" #include "cauchy.h" #include "galois.h" #include "liberation.h" #include "reed_sol.h" };
第四步:生成解决方案吧,呵呵,你以为有这么顺利?真没有那么顺利的。俺就搞了挺久,反正这里你生成的时候,应该会弹出什么 _bzero的那个链接错误的,没错,在前面的步骤是要改点东西的,因为windows下vs2010好像不欢迎bzero也不推荐用它,反正它个memset是差不多作用的,然后就去改吧,在5个cpp文件里面,所有的bzero都用memset来替代,当然要加个参数,中间参数就是0就好,呵呵,改完了之后,就重新做上面的步骤吧,把那些东西全部都重新导进来一遍
好了,编译,生成,跑,ok了的。哎,真心不顺畅,好久没碰c++了
这还是准备工作而已,后续还有很多事情要做,搞吧

浙公网安备 33010602011771号