1. 准备

yum install cmake
yum install gcc gcc-c++
yum install ncurses ncurses-devel
yum install openssl openssl-devel

yum install valgrind

2. get src

git clone git@github.com:nats-io/cnats.git .

3. 编译

用 cmake 编出库
> cd cnats
> mkdir build
> cd build
> cmake ..
也可以为 cmake 指定一些编译选项,比如你想让生成的库不支持 TLS
> cmake .. -DNATS_BUILD_WITH_TLS=OFF
如果之前编译过,需要先
> make clean
或者 删除 build 目录,重新创建 build 目录,执行 cmake
执行 cmake -h 显示cmake 编译参数

如果想修改编译参数,需要编译 cache,然后重新编译
> make edit_cache

默认会编译生成所有target,包括 NATS 静态库、共享库、examples和test程序。位于 build 目录下它们各自的目录:src,examples,test
执行
> make install
将 NATS 静态库和共享库拷贝到 cnats/install/lib ,将 头文件拷贝到 cnats/install/lib/include (install及其子目录会自动创建)

若有安装 valgrind ,可以用它来检测内存
make test ARGS="-T memcheck"

或者,你可以直接调用 ctest 程序
ctest -T memcheck -V -I 1,4
上面的命令会用 valgrind 运行 tests(-T memcheck),用 verbose 输出(-v),从1至4运行tests(-I 1,4)

如果向 test/test.c 里添加一个 test, 需要将它添加到 allTests 数组。包含一个name和该test函数。你可以在任何地方将它添加到 allTests 数组

添加完后重新编译
$ make
[ 44%] Built target nats
[ 88%] Built target nats_static
[ 90%] Built target nats-publisher
[ 92%] Built target nats-queuegroup
[ 94%] Built target nats-replier
[ 96%] Built target nats-requestor
[ 98%] Built target nats-subscriber
Scanning dependencies of target testsuite
[100%] Building C object test/CMakeFiles/testsuite.dir/test.c.o
Linking C executable testsuite
[100%] Built target testsuite

现在通过调用test suite(不添加任何参数) 重新生成 list
$ ./test/testsuite
Number of tests: 77
它列出了添加到list.txt文件中的 tests数量。将该文件放到 源码的test目录
$ mv list.txt ../test/

然后 更新 build
$ cmake ..
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ivan/cnats/build

可以使用下面的环境变量影响testsuite的行为
正在进行内存检测时,如果发现系统响应非常慢,下面的变量允许testsuite在test过程中调整一些值
export NATS_TEST_VALGRIND=yes

当在versose模式下运行tests,下面的环境变量可以让你在test上看到server(gnatsd)的一些输出。
export NATS_TEST_KEEP_SERVER_OUTPUT=yes

如果想改变可执行文件的名称(gnatsd)或指定一个特定的地方,使用下面环境变量
set NATS_TEST_SERVER_EXE=c:\test\gnatsd.exe

参考:

https://github.com/nats-io/cnats

http://nats-io.github.io/cnats/

cnats 使用的更多相关文章

  1. NATS—基础介绍

    1. 介绍 NATS(Message bus): 从CloudFoundry的总架构图看,位于各模块中心位置的是一个叫nats的组件.NATS是由CloudFoundry的架构师Derek开发的一个开 ...

  2. 一种开源的分布式消息系统Nats

    一种开源的分布式消息系统Nats 作者:chszs.未经博主同意不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 1.NATS介绍 NATS是一个开源的 ...

  3. conan-transit服上的库列表

    conan-transit服上的库列表 因为获取列表比较慢,所以获取后在此记录,以备查找.conan-transit 是个只读库,不会有更新.新的库将上传到 conan-center. conan是C ...

  4. NATS_01:NATS基础介绍

    1.介绍 NATS(Message bus): 从CloudFoundry的总架构图看,位于各模块中心位置的是一个叫nats的组件.NATS是由CloudFoundry的架构师Derek开发的一个开源 ...

  5. Mac上使用brew安装Nginx服务器

    使用brew安装nginx $ brew install nginx 启动nginx sudo nginx 访问localhost:8080 发现已出现nginx的欢迎页面了.  为方便期间,做个软 ...

随机推荐

  1. SQL Fundamentals || DCL(Data Control Language) || 用户管理&Profile概要文件

    SQL Fundamentals || Oracle SQL语言 语句 解释 Create user Creates a user(usually performed by a DBA) Grant ...

  2. xcode工程编译错误:missing required architecture i386 解决方法

    可能原因一:项目内保存了.framework文件,在复制分发到不同计算机的时候可能会引发该错误 解决方法一:来到Targets->Build Settings->Framework Sea ...

  3. $("this") $(this) 区别

    1.$("this")是使用标签选择器,查找名为this的标签2.$(this)取出当前对象并转换为jQuery对象3.$(this)是jquery对象,能调用jquery的方法, ...

  4. mysql八:视图、触发器、事务、存储过程、函数

    一 视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,可以将该结果集当做表来使用. 使用视图我们可以把查询过程中的 ...

  5. python 面向对象 新式类和经典类

    # 经典类写法 # schoolMember.__init__(self, name, age, sex) # 新式类写法 super(Teather, self).__init__(name, ag ...

  6. UITextField输入中文

    [self.rightTF addTarget:self action:@selector(rightTFValueChange:) forControlEvents:UIControlEventEd ...

  7. InnoSQL/MySQL并行复制的实现与配置

    InnoSQL/MySQL并行复制的实现与配置 http://www.innomysql.net/article/6276.html 并行复制之前的解决方案 InnoSQL在5.5.30-v4版本中支 ...

  8. 如何修改WordPress网站默认登录地址wp-admin

    使用过WordPress程序建网站的学员都知道,我们使用Wordpress建好的网站,它的网站登录后台就是“网站域名/wp-admin”.如下图: 为了网站安全,如何修改Wordpress网站默认登录 ...

  9. Spark Sort-Based Shuffle具体实现内幕和源码详解

    为什么讲解Sorted-Based shuffle?2方面的原因:一,可能有些朋友看到Sorted-Based Shuffle的时候,会有一个误解,认为Spark基于Sorted-Based Shuf ...

  10. Spark中cache和persist的区别

    cache和persist都是用于将一个RDD进行缓存的,这样在之后使用的过程中就不需要重新计算了,可以大大节省程序运行时间. cache和persist的区别 基于Spark 1.6.1 的源码,可 ...