在win7上面编译Sigar,由于开发环境及编译器版本不同,出现了许多问题。

开发环境:

win7, CMAKE 3.11.0-rc2, jdk 1.8, perl5, ant 1.10.1, vs2015

1. 编译之前要运行 %vs_root%\VC\vcvarsall.bat amd64,设置vs的编译依赖环境, 64位的windows一定要加上参数 amd64

2. vs2015需要根据https://github.com/hyperic/sigar/issues/111的建议修改源码,解决snprintf宏定义冲突问题

diff --git a/src/os/win32/sigar_os.h b/src/os/win32/sigar_os.h
index 1499236..231f8ae 100755
--- a/src/os/win32/sigar_os.h
+++ b/src/os/win32/sigar_os.h
@@ -25,7 +25,9 @@#ifdef MSVC#define WIN32_LEAN_AND_MEAN
+#if _MSC_VER < 1900#define snprintf _snprintf
+#endif#if _MSC_VER <= 1200#define SIGAR_USING_MSC6 /* Visual Studio version 6 */#define HAVE_MIB_IPADDRROW_WTYPE 0

3. vs2015需要根据https://github.com/hyperic/sigar/issues/112的建议修改源码,解决wcstok函数签名不一致问题,也可以使用 _wcstok代替原来的wcstok,以调用老版函数。

--- a/bindings/java/src/jni/win32/eventlog.c   2010-04-28 17:00:00.000000000 -0400
+++ b/bindings/java/src/jni/win32/eventlog.c 2018-01-23 15:55:39.605908161 -0500
@@ -130,7 +130,8 @@}}-    ptr = wcstok(msgdll, FILESEP);
+    LPWSTR ex;
+    ptr = wcstok(msgdll, FILESEP, &ex);while (ptr) {HINSTANCE hlib;@@ -150,7 +151,7 @@break;}}
-        ptr = wcstok(NULL, FILESEP);
+        ptr = wcstok(NULL, FILESEP, &ex);}if (msgbuf) {

这样在bindings/java目录下面执行

ant clean

ant

就可以编译成功。

Sigar 编译笔记相关推荐

  1. MRuby 编译笔记

    专注于嵌入式脚本的MRuby在Windows下的编译笔记: 环境: OS: Windows 8.1, 使用 VS Express 2013 for Desktop. 材料: MRuby : 下载源码就 ...

  2. eos 编译笔记(注意点)

    eos 编译笔记(注意点) 一.从 GitHub 上下载原代码 二.下载完源代码后,执行编译原代码 三. 执行安装 四. 设置PATH路径 五. 启动nodeos节点 六. 通过config.ini文 ...

  3. LFS7.4编译笔记(3)

    在第一部分,我们编译了一个工具链及临时系统,然后在第二部分我们chroot到/mnt/lfs下面,利用临时系统的工具编译了我们最终的LFS系统.不过此时,我们的LFS系统还是不完整的,因为我们还没有安 ...

  4. 小白openwrt编译笔记——固件编译

    基于lean源码编译 lean源码 其它源码 Lienol源码 同样github上的源码也在国外,没有好梯子下载也是很费劲,我们可以用码云克隆一下,实现国内下载源码 Gitee(码云) 霍泰稳 极客邦 ...

  5. android开关机动画和铃声配置 MTK编译笔记

    1, MTK平台开关机动画配置, 将需要调整的开关机动画和铃声放到alps\frameworks\base\data\sounds 这个目录下面,打开 该目录下的Android.mk文件,增加下面的编 ...

  6. linux 内核编译笔记 (jettison, snowflock)

    过去的三个月一直在接触和 linux kernel 相关的工作,具体是要在一台新服务器上跑一个基于xen上修改的系统.期间遇到了很多问题,我也没想到用了三个多月我也没有完全解决这些问题.这中间我一直都 ...

  7. win10系统 ubuntu子系统 进行ndk编译笔记

    报错1:error adding symbols: file in wrong format collect2: error: ld returned 1 exit status win10系统 ub ...

  8. busybox编译笔记

    1.下载busybox-1.20.1.tar.bz 2.解压:tar   jxvf   busybox-1.20.1.tar.bz 3.配置: (1)进入解压后的文件busybox-1.20.1:cd ...

  9. MONO源码编译笔记-版本:unity-2018.4-mbe

    编译了一个星期,终于成功.官方的编译文件有问题,具体在后面写了. 一,编译不成功,看了下面一些网址 https://www.veryarm.com/117013.html https://hacpai ...

  10. Android编译笔记之五

    在官网上看到的编译kernel时的两条命令 make ARCH=arm rockchip_defconfig make ARCH=arm rk3288-firefly-rk808.img 第一条命令等 ...

最新文章

  1. word2016提示mathtype文件未找到:MathPage.wll
  2. java ftp connect_java实现ftp的几种方式(第3方包)
  3. c语言程序课程设计问题,矩形问题-C语言程序课程设课程设计(论文).doc
  4. c 语言中下标运算符,详解C++中二进制求补运算符与下标运算符的用法
  5. hdu 1421 动态规划
  6. WinCE中的RAM-Based Registry与HIVE-Based Registry
  7. TortoiseGIT创建及合并分支
  8. Spring Security OAuth2.0_总结_Spring Security OAuth2.0认证授权---springcloud工作笔记157
  9. Python 学习笔记 - 协程
  10. 总结的一些android公共库
  11. Beginning WF 4.0翻译——第一章(创建一个简单的工作流)续二
  12. ASP.NET MVC 随想录——探索ASP.NET Identity 身份验证和基于角色的授权,中级篇
  13. 如何将Win7、Win10笔记本,台式机系统C盘软件搬家? 只需3个步骤!!!
  14. javah生成java头文件
  15. 小米真蓝牙耳机说明书_小米蓝牙耳机使用说明,开箱评测小米蓝牙耳机
  16. SSRF漏洞原理及检测
  17. no-sql数据库之redis
  18. java 为什么要get,set方法
  19. 一维数组cvs文件,求数据平均值
  20. 二叉树的度为2的节点和叶子节点的关系

热门文章

  1. 使用scala使用fastjson将map转json报错
  2. 【python与数据分析】Python与数据分析概述
  3. Dev C++下载地址和安装教程(图解)
  4. mysql主从中断原因_mysql主从中断
  5. 黑马程序员Java教程学习笔记(一)
  6. Java工具类之Base64Utils实现base64码转换为文件流等互换
  7. 总结一下java并发包的学习
  8. Inceptor如何访问本地文件
  9. Comic Life 3 for Mac(漫画创作工具)
  10. 计算机办公软件考证教学总结,考证经历——办公软件的套路