So I guess you could use the static lib, but that may not be ideal.

Personally I’ve had problems with the packaged builds — e.g., the RH builds 
require specific versions of dependent libs that are not native to the OS.  For 
that reason, among others, I build libzmq from source.  That’s not easy either, 
but at least you know what you’re getting.

FWIW, here’s a snip from the build script that I use — you will obviously need 
to make changes for your environment, but it’s a start.  

# delete old build
rm -rf build
mkdir build
cd build

# do the build
cmake -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} 
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} \
   -DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
   -DENABLE_DRAFTS=On \
   -DBUILD_STATIC=Off \
   -DWITH_OPENPGM=Off \
   ..
rc=$?
[[ $rc != 0 ]] && exit $rc

make ${VERBOSE} && make ${VERBOSE} install
rc=$?
[[ $rc != 0 ]] && exit $rc


# copy source to facilitate debugging
mkdir -p ${INSTALL_PREFIX}/src
cp -rp ../src ${INSTALL_PREFIX}/


> On Sep 26, 2018, at 11:10 AM, Stephan again <op...@vs.uni-kassel.de> wrote:
> 
> And the static library installed from this repository seems to have the draft 
> api included. Here is the test for that: 
> nm -gC /usr/lib/x86_64-linux-gnu/libzmq.a | grep zmq_msg_group
> 
> nm: src_libzmq_la-devpoll.o: no symbols
> nm: src_libzmq_la-gssapi_mechanism_base.o: no symbols
> nm: src_libzmq_la-gssapi_client.o: no symbols
> nm: src_libzmq_la-gssapi_server.o: no symbols
> nm: src_libzmq_la-kqueue.o: no symbols
> nm: src_libzmq_la-poll.o: no symbols
> nm: src_libzmq_la-pollset.o: no symbols
> nm: src_libzmq_la-precompiled.o: no symbols
> nm: src_libzmq_la-select.o: no symbols
> nm: src_libzmq_la-vmci.o: no symbols
> nm: src_libzmq_la-vmci_address.o: no symbols
> nm: src_libzmq_la-vmci_connecter.o: no symbols
> nm: src_libzmq_la-vmci_listener.o: no symbols
> 0000000000000fb0 T zmq_msg_group(zmq_msg_t*) <- matched
> 
> Kind Regards
> 
>   Stephan
> 
> On 26.09.2018 17:05, Stephan again wrote:
>> I Installed it from:
>> 
>> http://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-draft/xUbuntu_18.04/
>>  
>> <http://download.opensuse.org/repositories/network:/messaging:/zeromq:/release-draft/xUbuntu_18.04/>
>> Hoping that it was compiled accordingly...
>> 
>> This: 
>> g++ Discovery.cpp /usr/lib/x86_64-linux-gnu/libzmq.a -lpthread 
>> -DZMQ_BUILD_DRAFT_API=1 -DENABLE_DRAFTS=On -o test
>> 
>> makes it even worth:
>> 
>> /usr/lib/x86_64-linux-gnu/libzmq.a(src_libzmq_la-socket_base.o): In function 
>> `zmq::socket_base_t::connect(char const*)':
>> (.text+0x4b26): undefined reference to `pgm_freeaddrinfo'
>> /tmp/cc62suQj.o: In function `msg_send(zmq_msg_t*, void*, char const*, char 
>> const*)':
>> Discovery.cpp:(.text+0x8e): undefined reference to `zmq_msg_set_group'
>> /tmp/cc62suQj.o: In function `msg_recv_cmp(zmq_msg_t*, void*, char const*, 
>> char const*)':
>> Discovery.cpp:(.text+0x148): undefined reference to `zmq_msg_group'
>> /tmp/cc62suQj.o: In function `main':
>> Discovery.cpp:(.text+0x30e): undefined reference to `zmq_leave'
>> Discovery.cpp:(.text+0x37f): undefined reference to `zmq_join'
>> Discovery.cpp:(.text+0x3c3): undefined reference to `zmq_join'
>> Discovery.cpp:(.text+0x407): undefined reference to `zmq_join'
>> Discovery.cpp:(.text+0x57c): undefined reference to `zmq_join'
>> Discovery.cpp:(.text+0x668): undefined reference to `zmq_leave'
>> /usr/lib/x86_64-linux-gnu/libzmq.a(src_libzmq_la-zmq_utils.o): In function 
>> `zmq_curve_keypair':
>> (.text+0x3e6): undefined reference to `crypto_box_keypair'
>> /usr/lib/x86_64-linux-gnu/libzmq.a(src_libzmq_la-zmq_utils.o): In function 
>> `zmq_curve_public':
>> (.text+0x482): undefined reference to `crypto_scalarmult_base'
>> /usr/lib/x86_64-linux-gnu/libzmq.a(src_libzmq_la-ip.o): In function 
>> `zmq::initialize_network()':
>> (.text+0x480): undefined reference to `pgm_init'
>> (.text+0x511): undefined reference to `pgm_error_free'
>> /usr/lib/x86_64-linux-gnu/libzmq.a(src_libzmq_la-ip.o): In function 
>> `zmq::shutdown_network()':
>> (.text+0x585): undefined reference to `pgm_shutdown'
>> /usr/lib/x86_64-linux-gnu/libzmq.a(src_libzmq_la-random.o): In function 
>> `zmq::random_open()':
>> (.text+0x95): undefined reference to `sodium_init'
>> /usr/lib/x86_64-linux-gnu/libzmq.a(src_libzmq_la-random.o): In function 
>> `zmq::random_close()':
>> (.text+0xc1): undefined reference to `randombytes_close'
>> /usr/lib/x86_64-linux-gnu/libzmq.a(src_libzmq_la-pgm_socket.o): In function 
>> `zmq::pgm_socket_t::init_address(char const*, pgm_addrinfo_t**, unsigned 
>> short*)':
>> (.text+0x17e): undefined reference to `pgm_getaddrinfo'
>> (.text+0x26f): undefined reference to `pgm_error_free'
>> 
>> ....
>> 
>> Kind Regards
>> 
>>   Stephan
>> 
>> 
>> On 26.09.2018 16:55, Jake wrote:
>>> ZeroMQ itself needs to be compiled with ENABLE_DRAFTS in CMake.  You've 
>>> added it to the compiler flags when building your own application.  Did you 
>>> compile ZeroMQ yourself or are you using a distro-provided version?
>>> 
>>> For the static library, one way is to give the full path to the .a file 
>>> instead of using -lzmq.  gcc default behavior prefers the shared object 
>>> when both are present.
>>> 
>>> -Jake
>>> 
>>> 
>>> On Wed, Sep 26, 2018 at 10:51 AM Stephan again <op...@vs.uni-kassel.de 
>>> <mailto:op...@vs.uni-kassel.de>> wrote:
>>> Hi Bill,
>>> 
>>> adding -DENABLE_DRAFTS=On does not help:
>>> 
>>> g++ Discovery.cpp -lzmq -DZMQ_BUILD_DRAFT_API=1 -DENABLE_DRAFTS=On -o test
>>> 
>>> I also checked my installed libraries with "nm -gC <library | grep 
>>> zmq_msgs_group":
>>> 
>>> /usr/lib/x86_64-linux-gnu/libzmq.a -> match
>>> /usr/lib/x86_64-linux-gnu/libzmq.so -> no match
>>> /usr/lib/x86_64-linux-gnu/libzmq.so.5 -> no match
>>> /usr/lib/x86_64-linux-gnu/libzmq.so.5.1.5 -> no match
>>> 
>>> I am not so into this dynamic and static library stuff, but my build chain 
>>> is linking agains "/usr/lib/x86_64-linux-gnu/libzmq.so". Is that the 
>>> problem? How do I force it on command line to link against the static 
>>> version.
>>> 
>>> Kind Regards
>>> 
>>>   Stephan
>>> 
>>> On 26.09.2018 16:08, Bill Torpey wrote:
>>>> Hi Stephan:
>>>> 
>>>> The RADIO/DISH sockets are considered DRAFT, which is probably why you’re 
>>>> getting these errors.
>>>> 
>>>> There are a couple of possibilities:
>>>> 
>>>> - You may be linking against a version of libzmq that doesn’t include the 
>>>> draft APIs.  In order to build with draft support, the build needs to 
>>>> specify "-DENABLE_DRAFTS=On” on the cmake command line.  Make sure your 
>>>> libzmq was built with support for the draft APIs.
>>>> 
>>>> 
>>>> - You also need to enable draft APIs in your code, similar to following:
>>>> 
>>>> #define ZMQ_BUILD_DRAFT_API
>>>> #include <zmq.h>
>>>> 
>>>> The #define makes the draft APIs visible to your code.
>>>> 
>>>> (Never mind — you’re already doing this on the compile command).
>>>> 
>>>> Hope this helps.
>>>> 
>>>> Bill
>>>> 
>>>>> On Sep 26, 2018, at 9:13 AM, Stephan again <op...@vs.uni-kassel.de 
>>>>> <mailto:op...@vs.uni-kassel.de>> wrote:
>>>>> 
>>>>> Hi,
>>>>> 
>>>>> I asked this question/issue one and a half year ago 
>>>>> (https://lists.zeromq.org/mailman/private/zeromq-dev/2017-January/031309.html
>>>>>  
>>>>> <https://lists.zeromq.org/mailman/private/zeromq-dev/2017-January/031309.html>).
>>>>>  The difference is that I now would like to use zeromq (draft api) 
>>>>> version 4.2.5 under Ubuntu 18.04.
>>>>> 
>>>>> My minimal (not) working example can be found here: 
>>>>> https://gist.github.com/StephanOpfer/5b9f3f76e6610536078cb9c16072aac9 
>>>>> <https://gist.github.com/StephanOpfer/5b9f3f76e6610536078cb9c16072aac9>
>>>>> 
>>>>> Compiling it with this command:
>>>>> 
>>>>>     g++ Discovery.cpp -lzmq -DZMQ_BUILD_DRAFT_API=1 -o test
>>>>> 
>>>>> produces this:
>>>>> 
>>>>>     /tmp/ccUwelWs.o: In function `msg_send(zmq_msg_t*, void*, char 
>>>>> const*, char const*)':
>>>>>     Discovery.cpp:(.text+0x8e): undefined reference to `zmq_msg_set_group'
>>>>>     /tmp/ccUwelWs.o: In function `msg_recv_cmp(zmq_msg_t*, void*, char 
>>>>> const*, char const*)':
>>>>>     Discovery.cpp:(.text+0x148): undefined reference to `zmq_msg_group'
>>>>>     /tmp/ccUwelWs.o: In function `main':
>>>>>     Discovery.cpp:(.text+0x30e): undefined reference to `zmq_leave'
>>>>>     Discovery.cpp:(.text+0x37f): undefined reference to `zmq_join'
>>>>>     Discovery.cpp:(.text+0x3c3): undefined reference to `zmq_join'
>>>>>     Discovery.cpp:(.text+0x407): undefined reference to `zmq_join'
>>>>>     Discovery.cpp:(.text+0x57c): undefined reference to `zmq_join'
>>>>>     Discovery.cpp:(.text+0x668): undefined reference to `zmq_leave'
>>>>>     collect2: error: ld returned 1 exit status
>>>>> 
>>>>> Any help is welcome. :)
>>>>> 
>>>>> Kind Regards
>>>>> 
>>>>>   Stephan
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> zeromq-dev mailing list
>>>>> zeromq-dev@lists.zeromq.org <mailto:zeromq-dev@lists.zeromq.org>
>>>>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev 
>>>>> <https://lists.zeromq.org/mailman/listinfo/zeromq-dev>
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> zeromq-dev mailing list
>>>> zeromq-dev@lists.zeromq.org <mailto:zeromq-dev@lists.zeromq.org>
>>>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev 
>>>> <https://lists.zeromq.org/mailman/listinfo/zeromq-dev>
>>> 
>>> _______________________________________________
>>> zeromq-dev mailing list
>>> zeromq-dev@lists.zeromq.org <mailto:zeromq-dev@lists.zeromq.org>
>>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev 
>>> <https://lists.zeromq.org/mailman/listinfo/zeromq-dev>
>>> 
>>> 
>>> _______________________________________________
>>> zeromq-dev mailing list
>>> zeromq-dev@lists.zeromq.org <mailto:zeromq-dev@lists.zeromq.org>
>>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev 
>>> <https://lists.zeromq.org/mailman/listinfo/zeromq-dev>
>> 
>> 
>> 
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev@lists.zeromq.org <mailto:zeromq-dev@lists.zeromq.org>
>> https://lists.zeromq.org/mailman/listinfo/zeromq-dev 
>> <https://lists.zeromq.org/mailman/listinfo/zeromq-dev>
> 
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev@lists.zeromq.org
> https://lists.zeromq.org/mailman/listinfo/zeromq-dev

_______________________________________________
zeromq-dev mailing list
zeromq-dev@lists.zeromq.org
https://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to