Linux:
0.CMake编译参数
ENABLE_BOOST_CONTEXT `这是在linux上性能最佳的编译参数` libgo在Linux系统上默认使用ucontext做协程上下文切换,开启此选项将使用boost.context来替代ucontext. 使用方式: $ cmake .. -DENABLE_BOOST_CONTEXT=ON ENABLE_BOOST_COROUTINE libgo在Linux系统上默认使用ucontext做协程上下文切换,开启此选项将使用boost.coroutine来替代ucontext. 使用方式: $ cmake .. -DENABLE_BOOST_COROUTINE=ON DISABLE_HOOK 禁止hook syscall,开启此选项后,网络io相关的syscall将恢复系统默认的行为, 协程中使用阻塞式网络io将可能真正阻塞线程,如无特殊需求请勿开启此选项. 使用方式: $ cmake .. -DDISABLE_HOOK=ON 不开启ENABLE_BOOST_CONTEXT和ENABLE_BOOST_COROUTINE选项时, libgo不依赖boost库,可以直接使用,仅测试代码依赖boost库。
1.如果你安装了ucorf或libgonet,那么你已经使用默认的方式安装过libgo了,如果不想设置如上的选项,可以跳过第2步.
2.使用CMake进行编译安装:
$ mkdir build $ cd build $ cmake .. $ sudo make install 如果希望编译可调试的版本, "cmake .." 命令执行完毕后执行: $ make debug $ sudo make install 执行单元测试代码: $ make test $ make run_test 生成性能网络测试代码: $ make bm
3.以动态链接的方式使用时,一定要最先链接liblibgo.so,还需要链接libdl.so. 例如:
g++ -std=c++11 test.cpp -llibgo -ldl [-lother_libs]
4.以静态链接的方式使用时,只需链接liblibgo.a即可,不要求第一个被链接,但要求libc.a最后被链接. 要求安装GCC的静态链接库, debian系Linux安装gcc时已经自带, redhat系Linux需要从源中另行安装(yum install gcc-static) 例如:
g++ -std=c++11 test.cpp -llibgo -static -static-libgcc -static-libstdc++