# ZeroMQ on z/OS UNIX System Services
ZeroMQ has been successfully built on z/OS, using [z/OS UNIX System
Services](http://www-03.ibm.com/systems/z/os/zos/features/unix/),
a certified UNIX environment for the [IBM
z-series](http://www-03.ibm.com/systems/z/). The build is possible
with the shell scripts in this directory, as described below.
Tested build combinations:
* ZeroMQ 4.0.4, using IBM XL C/C++ compiler, as XPLINK in ILP32 mode
* ZeroMQ 4.0.4, using IBM XL C/C++ compiler, as XPLINK in LP64 mode
* ZeroMQ 4.1-git, using IBM XL C/C++ compiler, as XPLINK in ILP32 mode
Other combinations are likely to work, possibly with minor changes,
but have not been tested. Both static library and DLL modes have been
tested.
There are some minor limitations (detailed below), but all core
functionality tests run successfully.
## Quickstart: building ZeroMQ on z/OS UNIX System Services
Assuming [z/OS UNIX System
Services](http://www-03.ibm.com/systems/z/os/zos/features/unix/) is
installed, and the [z/OS XL C/C++
compiler suite](http://www-03.ibm.com/software/products/en/czos) is
installed, ZeroMQ can be built as follows:
* Download and extract ZeroMQ tar file
* Ensure contents of this directory are present at `builds/zos`
within that extracted diretory (eg, `zeromq-VERSION/builds/zos/`;
copy these files in, if not already present, and make sure the
shell scripts are executable)
* (Optional) set ZCXXFLAGS for additional compile flags (see below)
* Build `libzmq.a` static library and `libzmq.so` dynamic
library, with:
cd zeromq-VERSION
builds/zos/makelibzmq
or to skip the `libzmq.so` dynamic library (only building `libzmq.a`):
cd zeromq-VERSION
BUILD_DLL=false
export BUILD_DLL
builds/zos/makelibzmq
* (Optional, but recommended) build and run the core tests with:
cd zeromq-VERSION
builds/zos/maketests
builds/zos/runtests
* To remove built files, to start again (eg, rebuild with different
compile/link flags):
cd zeromq-VERSION
builds/zos/makeclean
There are details on specifying alternative compilation flags below.
## Quickstart: using ZeroMQ on z/OS UNIX System Services
### Static linking
Install `include/*.h` somewhere on your compiler include path.
Install `src/libzmq.a` somewhere on your library search path.
Compile and link application with:
c++ -Wc,xplink -Wl,xplink ... -+ -o myprog myprog.cpp -lzmq
Run with:
./myprog
### Dynamic linking
Install `include/*.h` somewhere on your compiler include path.
Install `src/libzmq.so` somewhere on your LIBPATH.
Install `src/libzmq.x` somewhere you can reference for import linking.
Compile and link application:
c++ -Wc,xplink -Wc,dll ... -+ -c -o myprog.o myprog.cpp
c++ -Wl,xplink -o myprog myprog.o /PATH/TO/libzmq.x
Run with:
LIBPATH=/DIR/OF/LIBZMQ.SO:/lib:/usr/lib:... # if not in default path
export LIBPATH
./myprog
## ZeroMQ on z/OS UNIX System Services: Application considerations
z/0S UNIX System Services does not provide a way to block the
[`SIGPIPE` signal being generated when a thread writes to a closed socket](http://pic.dhe.ibm.com/infocenter/zvm/v6r2/index.jsp?topic=%2Fcom.ibm.zos.r12.cbcpx01%2Fcbcpg1b0287.htm)
(compare with other platforms that support the `SO_NOSIGPIPE` socket
option, and/or the `MSG_NOSIGNAL` flag on `send()`; z/OS UNIX System
Services supports neither).
As a result, applications using ZeroMQ on z/OS UNIX System Services
have to expect to encounter `SIGPIPE` at various times during the use
of the library, if sockets are unexpectedly disconnected. Normally
`SIGPIPE` will terminate the application.
A simple solution, if `SIGPIPE` is not required for normal operation
of the application (eg, it is not part of a unix pipeline, the
traditional use of `SIGPIPE`), is to set `SIGPIPE` to be ignored
with code like:
#include <signal.h>
...
signal(SIGPIPE, SIG_IGN);
near the start of the application (eg, before initialising the ZeroMQ
library).
If `SIGPIPE` is required for normal operation it is recommended that
the application install a signal handler that flags the signal was
received, and allows the application main loop to determine if it
was received for one of its own file descriptors -- and ignores it if it
none of the applications own file descriptors seems to have changed.
Linking to the `libzmq.a` static library will pull in substantially
all of the library code, which will add about 4MB to the application
size (per executable statically linked with ZeroMQ). If this is a
significant consideration, use of the DLL version is recommended.
See also ZeroMQ test status on z/OS UNIX System Services below
for other caveats.
## Setting other compilation flags
### Optimisation
To build with optimisation:
* set `ZCXXFLAGS` to "`-O2`" before starting build process above
### Full debugging symbols
To build with debugging symbols:
* set `ZCXXFLAGS` to "`-g`" before starting build process above
### 64-bit mode (LP64/amode=64)
To build in 64-bit mode:
The default build is
[ILP32](http://publib.boulder.ibm.com/infocenter/zvm/v6r1/index.jsp?topic=/com.ibm.zos.r9.cbcux01/lp64cop.htm),
the default for the IBM XL C/C++ compiler. To build in LP64 mode
(64-bit):
* set `ZCXXFLAGS` to "`-Wc,lp64 -Wl,lp64`" before starting build
(64-bit mode can be combined with optimisation or debug symbols.)
### Combining compilation flags
Other build flags can be used in `ZXCCFLAGS` if desired. Beware that
they are passed through (Bourne) shell expansion, and passed to both
the compile and link stages; some experimentation of argument quoting
may be required (and arguments requiring parenthesis are particularly
complicated).
## ZeroMQ test status on z/OS UNIX System Services
As of 2014-07-22, 41 of the 43 tests in the core ZeroMQ test suite
pass. There are two tests that are expected to fail:
0. `test_abstract_ipc`: tests Linux-specific IPC functions, and is
expected to fail on non-Linux platforms.
0. `test_fork`: tests ability to use ZeroMQ both before *and* after
fork (and before exec()); this relies on the ability to use
pthreads both before *and* after fork. On z/OS (and some other
UNIX compliant platforms) functions like `pthreads_create` (used
by ZeroMQ) cannot be used after fork and before exec; on z/OS the
call after fork fails with `ELEMULTITHREADFORK` (errno=257) if
ZeroMQ was also used before fork. (On z/OS it appears possible
to use z/OS *after* fork, *providing* it has not been used before
fork -- the problem is the two separate initialisations of the
threading library, before and after fork, attempting to mix
together.) In practice this is unlikely to affect many real-world
programs -- most programs use threads or fork without exec, but
not both.
0. `test_diffserv`: tests ability to set IP_TOS ([IP Type of
Service](http://en.wikipedia.org/wiki/Type_of_service), or
[DiffServ](http://en.wikipedia.org/wiki/Differentiated_Services_Code_Point))
values on sockets. While z/OS UNIX System Services has the
preprocessor defines required, it appears not to support the
required functionality (call fails with "EDC8109I Protocol not
available.")
These three "expected to fail" tests are listed as XFAIL_TESTS, and
`runtests` will still consider the test run successful when they fail
as expected. (`builds/zos/runtests` will automatically skip these
"expected to fail" tests if running "all" tests.)
In addition `test_security_curve` does not do any meaningful testing,
as a result of the CURVE support not being compiled in; it requires
[`libsodium`](http://doc.libsodium.org/), which has not been
ported to z/OS UNIX System Services yet.
Multicast (via `libpgm`) is also not ported or compiled in.
[TIPC](http://hintjens.com/blog:70), a cluster IPC protocol,
is only supported on Linux, so it is not compiled
没有合适的资源?快使用搜索试试~ 我知道了~
ZeroMQ一个强大的Socket库
共694个文件
cpp:211个
hpp:133个
txt:66个
需积分: 29 8 下载量 103 浏览量
2018-05-10
00:06:43
上传
评论
收藏 1.98MB ZIP 举报
温馨提示
“ZMQ(以下ZeroMQ简称ZMQ)是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接字之上的一 层封装。ZMQ让编写高性能网络应用程序极为简单和有趣。”
资源推荐
资源详情
资源评论
收起资源包目录
ZeroMQ一个强大的Socket库 (694个子文件)
zmq_setsockopt.3 60KB
zmq_getsockopt.3 41KB
zmq_socket.3 31KB
zmq_socket_monitor.3 11KB
zmq_ctx_set.3 8KB
zmq_poll.3 6KB
zmq_msg_send.3 6KB
zmq_sendmsg.3 6KB
zmq_msg_recv.3 5KB
zmq_connect.3 5KB
zmq_recvmsg.3 5KB
zmq_bind.3 5KB
zmq_send_const.3 5KB
zmq_proxy_steerable.3 5KB
zmq_send.3 5KB
zmq_proxy.3 4KB
zmq_recv.3 4KB
zmq_msg_init_data.3 4KB
zmq_ctx_get.3 4KB
zmq_unbind.3 4KB
zmq_disconnect.3 4KB
zmq_msg_gets.3 4KB
zmq_ctx_term.3 3KB
zmq_msg_copy.3 3KB
zmq_msg_get.3 3KB
zmq_msg_init_size.3 3KB
zmq_close.3 3KB
zmq_has.3 3KB
zmq_atomic_counter_value.3 3KB
zmq_atomic_counter_new.3 3KB
zmq_atomic_counter_destroy.3 3KB
zmq_msg_init.3 3KB
zmq_atomic_counter_set.3 3KB
zmq_atomic_counter_dec.3 3KB
zmq_msg_close.3 3KB
zmq_msg_more.3 3KB
zmq_atomic_counter_inc.3 3KB
zmq_curve_public.3 3KB
zmq_msg_routing_id.3 3KB
zmq_msg_move.3 3KB
zmq_z85_encode.3 3KB
zmq_errno.3 2KB
zmq_ctx_shutdown.3 2KB
zmq_curve_keypair.3 2KB
zmq_version.3 2KB
zmq_strerror.3 2KB
zmq_z85_decode.3 2KB
zmq_msg_set_routing_id.3 2KB
zmq_msg_size.3 2KB
zmq_msg_data.3 2KB
zmq_ctx_new.3 2KB
zmq_msg_set.3 2KB
zmq.7 10KB
zmq_pgm.7 8KB
zmq_tcp.7 6KB
zmq_ipc.7 6KB
zmq_vmci.7 5KB
zmq_udp.7 4KB
zmq_curve.7 4KB
zmq_inproc.7 4KB
zmq_gssapi.7 4KB
zmq_tipc.7 3KB
zmq_plain.7 2KB
zmq_null.7 2KB
configure.ac 26KB
Makefile.am 23KB
Makefile.am 4KB
Makefile.am 2KB
Makefile.am 753B
AUTHORS 2KB
libzmq.autopkg 1KB
buildbase.bat 3KB
build.bat 778B
buildall.bat 333B
tweetnacl.c 21KB
ChangeLog 183KB
ZMQSourceRunChecks.cmake 7KB
FindSodium.cmake 2KB
FindAsciiDoc.cmake 954B
TestZMQVersion.cmake 529B
compile 7KB
asciidoc.conf 1KB
configure 770KB
COPYING 34KB
socket_base.cpp 51KB
zmq.cpp 42KB
stream_engine.cpp 33KB
options.cpp 30KB
test_security_curve.cpp 28KB
tcp_address.cpp 27KB
norm_engine.cpp 26KB
proxy.cpp 25KB
pgm_socket.cpp 22KB
signaler.cpp 21KB
socket_poller.cpp 20KB
session_base.cpp 20KB
ctx.cpp 19KB
select.cpp 19KB
test_xpub_manual.cpp 17KB
curve_server.cpp 17KB
共 694 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
WangZayn
- 粉丝: 9
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功