我正在尝试编译一个使用zeromq的程序。 makefile的这一部分引用了zeromq库。
LIBS=-lzmq -ldl -lsqlite3 $(OPTLIBS)
我在ubuntu上,而库(libzmq.so)位于/ usr / local / lib中。我不明白lzmq的意思。图书馆是否在某处注册?如何定义lzmq所指的路径?
答案 0 :(得分:2)
选项-lzmq
是链接器标志-l
,后跟参数zmq
。链接器标志-l
告诉链接器链接库zmq
。链接器将使用该名称在各种目录中查找具有各种形式的库。例如,在典型的POSIX系统上,它将查找libzmq.so
(共享库),后跟libzmq.a
(静态库)。
它查找的目录是一组默认目录(通常/usr/local/lib
是其中之一,但并非总是如此),以及在-L
标志的链接行上指定的任何目录。因此,将-L/usr/local/lib
添加到您的链接行(-lzmq
之前)将使链接器搜索该库的/usr/local/lib
。
有关更多详细信息,请参阅编译器和链接器的文档。