如何使用libmosquitto进行编译

Anj*_*njz 3 c gcc mqtt mosquitto

我试图编译libmosquitto网站上的代码示例(在底部):http: //mosquitto.org/man/libmosquitto-3.html

我使用Ubuntu 12.04并安装了libmosquitto1和libmosquitto1-dev软件包.在安装它们之前,我添加了mosquitto存储库:

sudo apt-add-repository ppa:mosquitto-dev/mosquitto-ppa
sudo apt-get update
Run Code Online (Sandbox Code Playgroud)

我试图编译示例如下:

gcc -lmosquitto mosquito.c -o mosquito
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

/tmp/cc6eU8kw.o: In function `my_connect_callback':
mosquito.c:(.text+0xf8): undefined reference to `mosquitto_subscribe'
/tmp/cc6eU8kw.o: In function `main':
mosquito.c:(.text+0x298): undefined reference to `mosquitto_lib_init'
mosquito.c:(.text+0x2b4): undefined reference to `mosquitto_new'
mosquito.c:(.text+0x310): undefined reference to `mosquitto_log_callback_set'
mosquito.c:(.text+0x324): undefined reference to `mosquitto_connect_callback_set'
mosquito.c:(.text+0x338): undefined reference to `mosquitto_message_callback_set'
mosquito.c:(.text+0x34c): undefined reference to `mosquitto_subscribe_callback_set'
mosquito.c:(.text+0x364): undefined reference to `mosquitto_connect'
mosquito.c:(.text+0x3b4): undefined reference to `mosquitto_loop'
mosquito.c:(.text+0x3c8): undefined reference to `mosquitto_destroy'
mosquito.c:(.text+0x3d0): undefined reference to `mosquitto_lib_cleanup'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

有人可以给我一些关于如何编译这个简单例子的技巧吗?谢谢

Run*_*ium 8

你必须把它-lmosquitto放在最后(在源文件之后).

gcc mosquito.c -lmosquitto -o mosquito
# or
gcc mosquito.c -o mosquito -lmosquitto
# or
gcc -o mosquito mosquito.c -lmosquitto
Run Code Online (Sandbox Code Playgroud)

或更好:

gcc -Wall -Wextra -pedantic -o mosquito mosquito.c -lmosquitto
Run Code Online (Sandbox Code Playgroud)