依赖环境
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| FROM ubuntu:18.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \ build-essential \ cmake \ g++ \ gcc \ make \ libboost-all-dev \ uuid-dev \ pkg-config \ libsasl2-dev \ libnss3-dev \ libnspr4-dev \ doxygen \ graphviz \ help2man \ swig \ libxerces-c-dev \ libxqilla-dev \ libibverbs-dev \ librdmacm-dev \ libdb++-dev \ libaio-dev \ ruby ruby-dev \ wget \ unzip \ git \ && apt-get clean
RUN wget https://bootstrap.pypa.io/pip/2.7/get-pip.py && python2 get-pip.py && rm get-pip.py
WORKDIR /opt RUN git clone https://gitbox.apache.org/repos/asf/qpid-cpp.git
WORKDIR /opt/qpid-cpp RUN mkdir build
ENV LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
CMD ["/bin/bash"]
|
python2.7环境
1 2 3
| apt-get install python2.7 ln -s /usr/bin/python2.7 /usr/bin/python python --version
|
qpid-cpp 的 CMake 逻辑
顶层 /opt/qpid-cpp/CMakeLists.txt 是总控,主要负责:
而**真正控制 qpidd 编译细节的是 src/CMakeLists.txt**。
1 2 3
| add_executable (qpidd ${qpidd_SOURCES} /opt/qpid-cpp/build/coverage_runtime.o) target_compile_options(qpidd PRIVATE -fsanitize-coverage=trace-pc-guard) target_link_libraries (qpidd qpidbroker qpidcommon)
|
编译
1 2 3 4
| cd /opt/qpid-cpp/build rm -rf CMakeCache.txt CMakeFiles CXX=clang++ CC=clang cmake -DBUILD_PROBES=no .. make -j$(nproc)
|
查看是否插桩成功
1
| nm qpidd | grep trace_pc_guard
|
启动 Broker:
1 2
| /usr/local/sbin/qpidd /qpid-cpp/build/src/qpidd
|
-------------
Thank you for reading
-------------