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