Closed hominlinx closed 8 years ago
首先很抱歉, 现在才看到你的email, 由于这个email账号很少开, 所以回答有点晚, 希望对你有所帮助.
你来的两封email我都收到了, 下面回答一下你的两个问题, 由于这个项目我也很久没碰了, 不正确之处, 请多包涵.
1、 您的初始代码(firstsubmit)是如何将那些.h.in转换为.h的,我看了一下,这里面涉及到系统是64位还是32位。
我记得是用windows下的cgywin环境或者MinGW环境, 执行源代码根目录下的autogen.sh或者configure, 这时会根据你的机器和系统, 会设置和生成那些.h文件, 即从.h.in文件里构建, 然后执行make, 我记得当时有很多错误, 我最终也没有编译通过, 但是我就利用这些设置生成的文件, 构建VS2008里可以使用的版本, 并适当做了一些修改, 让其可以在VS2008环境下可以编译, 具体修改了哪些地方我也不太记得了.
我做这个项目主要想测试和比较一下jemalloc, tcmalloc, APR, 默认malloc的效率, 用我这个版本编译出来的jemalloc在windows下好像效率有些问题, 不知道是不是我设置不对, 还是jemalloc本身有问题, 当然, 为了能在VS2008上编译, 我加了不少代码, 可能也有一定关系, 总之, 如果能在cgywin或MinGW环境下编译, 最好是在类Linux的环境编译, 官方代码并不具备Visual Studio下的完全支持和编译.
关于指定为64位或32位, 是可以通过configure后面带参数设置的, 一般使用-m32 CPPFLAGS=-m32 CFLAGS=-m32 等指定为32位, 具体你可以google一下"configure 32bit"等.
2、 我在编译的Test工程的时候出错。我现在是编译的初始代码:
1>------ Build started: Project: jemalloc_test, Configuration: Debug Win32 ------
1>Compiling...
1>jemalloc_main.c
1>e:\opensource\jemalloc\jemalloc-win32\include\jemalloc\jemalloc.h(8) : fatal error C1083: Cannot open include file: 'strings.h': No such file or directory
1>Build log was saved at "file://E:\opensource\jemalloc\jemalloc-win32\tmp\windows\x86\vc2008\Debug\jemalloc_test\BuildLog.htm"
1>jemalloc_test - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 1 up-to-date, 0 skipped ==========
错误说明是没有stings.h,您是如何编译通过的??
我看了一下, 的确, 好像我的系统因为装了别的一些库, 带有这个头文件, 你也可以把这句注释掉试试, 或者使用这个:
/* strings.h
Copyright 2007 Red Hat, Inc.
This file is part of Cygwin.
This software is a copyrighted work licensed under the terms of the Cygwin license. Please consult the file "CYGWIN_LICENSE" for details. */
/* newlib's string.h already declares these functions. */
_BEGIN_STD_C
int _EXFUN(bcmp,(const void , const void , size_t)); void _EXFUN(bcopy,(const void , void , size_t)); void _EXFUN(bzero,(void , size_t)); int _EXFUN(ffs,(int)); char _EXFUN(index,(const char , int)); char _EXFUN(rindex,(const char , int)); int _EXFUN(strcasecmp,(const char , const char )); int _EXFUN(strncasecmp,(const char , const char *, size_t));
_END_STD_C
3、还有一个问题, 我发现使用vld的#include
4、我email告诉你QQ, 不过最近上得也不多, 不过偶尔还是会上上.
请问你的jemalloc_defs.h是如何生成的啊?