Could Not Read Symbols while linking ZeroMQ
Contents
While I make my cpp source files linking ZeroMQ under Ubuntu, I got following error:
/usr/bin/ld: test_server.o: undefined reference to symbol ‘zmq_strerror’ /usr/bin/ld: note: ‘zmq_strerror’ is defined in DSO /usr/local/lib/libzmq.so.3 so try adding it to the linker command line /usr/local/lib/libzmq.so.3: could not read symbols: Invalid operation
The ZeroMQ library has already installed. By checking the man:
Libraries have been installed in: /usr/local/lib
If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR’ flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH’ environment variable during execution
- add LIBDIR to the `LD_RUN_PATH’ environment variable during linking
- use the `-Wl,-rpath -Wl,LIBDIR’ linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages.
I get rid of the error by following steps:
- install libtool;
- add the library path to LD_LIBRARY_PATH;
- use root to make.
I think the last one, using root to make, is the key point. Why?
Author Watterry
LastMod 2014-04-01