The Eclipse Paho C Client library enables applications to connect to an MQTT broker to publish messages, and to subscribe to topics and receive published messages.
The snippet below shows an example of how to compile the binaries from source. Making use of the library requires additional effort and is a topic for another discussion.
git clone https://github.com/eclipse/paho.mqtt.c.git
Cloning into 'paho.mqtt.c'...
remote: Counting objects: 3556, done.
remote: Total 3556 (delta 0), reused 0 (delta 0), pack-reused 3556
Receiving objects: 100% (3556/3556), 1.22 MiB | 1.07 MiB/s, done.
Resolving deltas: 100% (2557/2557), done.
Checking connectivity... done.
ls
paho.mqtt.c
cd paho.mqtt.c/
make
mkdir -p build/output/samples
mkdir -p build/output/test
echo OSTYPE is Linux
OSTYPE is Linux
sed -e "s/@CLIENT_VERSION@/1.2.0/g" -e "s/@BUILD_TIMESTAMP@/Mon Oct 23 13:28:24 AEST 2017/g" src/VersionInfo.h.in > build/VersionInfo.h
cc -g -fPIC -Os -Wall -fvisibility=hidden -Ibuild -o build/output/libpaho-mqtt3c.so.1.0 src/Heap.c src/Socket.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/MQTTPersistenceDefault.c src/MQTTPacketOut.c src/Clients.c src/OsWrapper.c src/Thread.c src/MQTTPacket.c src/Messages.c src/MQTTPersistence.c src/MQTTClient.c src/Log.c src/LinkedList.c src/StackTrace.c src/utf-8.c src/SocketBuffer.c src/Tree.c -shared -Wl,-init,MQTTClient_init -lpthread -Wl,-soname,libpaho-mqtt3c.so.1
ln -s libpaho-mqtt3c.so.1.0 build/output/libpaho-mqtt3c.so.1
ln -s libpaho-mqtt3c.so.1 build/output/libpaho-mqtt3c.so
cc -g -fPIC -Os -Wall -fvisibility=hidden -Ibuild -o build/output/libpaho-mqtt3cs.so.1.0 src/Heap.c src/Socket.c src/SSLSocket.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/MQTTPersistenceDefault.c src/MQTTPacketOut.c src/Clients.c src/OsWrapper.c src/Thread.c src/MQTTPacket.c src/Messages.c src/MQTTPersistence.c src/MQTTClient.c src/Log.c src/LinkedList.c src/StackTrace.c src/utf-8.c src/SocketBuffer.c src/Tree.c -DOPENSSL -shared -Wl,--start-group -lpthread -ldl -lssl -lcrypto -Wl,--end-group -Wl,-init,MQTTClient_init -Wl,-soname,libpaho-mqtt3cs.so.1 -Wl,-no-whole-archive
ln -s libpaho-mqtt3cs.so.1.0 build/output/libpaho-mqtt3cs.so.1
ln -s libpaho-mqtt3cs.so.1 build/output/libpaho-mqtt3cs.so
cc -g -fPIC -Os -Wall -fvisibility=hidden -Ibuild -o build/output/libpaho-mqtt3a.so.1.0 src/Heap.c src/Socket.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/MQTTAsync.c src/MQTTPersistenceDefault.c src/MQTTPacketOut.c src/Clients.c src/OsWrapper.c src/Thread.c src/MQTTPacket.c src/Messages.c src/MQTTPersistence.c src/Log.c src/LinkedList.c src/StackTrace.c src/utf-8.c src/SocketBuffer.c src/Tree.c -shared -Wl,-init,MQTTAsync_init -lpthread -Wl,-soname,libpaho-mqtt3a.so.1
ln -s libpaho-mqtt3a.so.1.0 build/output/libpaho-mqtt3a.so.1
ln -s libpaho-mqtt3a.so.1 build/output/libpaho-mqtt3a.so
cc -g -fPIC -Os -Wall -fvisibility=hidden -Ibuild -o build/output/libpaho-mqtt3as.so.1.0 src/Heap.c src/Socket.c src/SSLSocket.c src/MQTTProtocolClient.c src/MQTTProtocolOut.c src/MQTTAsync.c src/MQTTPersistenceDefault.c src/MQTTPacketOut.c src/Clients.c src/OsWrapper.c src/Thread.c src/MQTTPacket.c src/Messages.c src/MQTTPersistence.c src/Log.c src/LinkedList.c src/StackTrace.c src/utf-8.c src/SocketBuffer.c src/Tree.c -DOPENSSL -shared -Wl,--start-group -lpthread -ldl -lssl -lcrypto -Wl,--end-group -Wl,-init,MQTTAsync_init -Wl,-soname,libpaho-mqtt3as.so.1 -Wl,-no-whole-archive
ln -s libpaho-mqtt3as.so.1.0 build/output/libpaho-mqtt3as.so.1
ln -s libpaho-mqtt3as.so.1 build/output/libpaho-mqtt3as.so
cc -I src -lpthread -L build/output -o build/output/MQTTVersion -lpaho-mqtt3a src/MQTTVersion.c -ldl
cc -o build/output/samples/paho_cs_pub src/samples/paho_cs_pub.c -lpaho-mqtt3c -I src -lpthread -L build/output
cc -o build/output/samples/paho_cs_sub src/samples/paho_cs_sub.c -lpaho-mqtt3c -I src -lpthread -L build/output
cc -o build/output/samples/MQTTClient_publish src/samples/MQTTClient_publish.c -lpaho-mqtt3c -I src -lpthread -L build/output
cc -o build/output/samples/MQTTClient_publish_async src/samples/MQTTClient_publish_async.c -lpaho-mqtt3c -I src -lpthread -L build/output
cc -o build/output/samples/MQTTClient_subscribe src/samples/MQTTClient_subscribe.c -lpaho-mqtt3c -I src -lpthread -L build/output
cc -o build/output/samples/paho_c_pub src/samples/paho_c_pub.c -lpaho-mqtt3a -I src -lpthread -L build/output
cc -o build/output/samples/paho_c_sub src/samples/paho_c_sub.c -lpaho-mqtt3a -I src -lpthread -L build/output
cc -o build/output/samples/MQTTAsync_subscribe src/samples/MQTTAsync_subscribe.c -lpaho-mqtt3a -I src -lpthread -L build/output
cc -o build/output/samples/MQTTAsync_publish src/samples/MQTTAsync_publish.c -lpaho-mqtt3a -I src -lpthread -L build/output
cc -DNOSTACKTRACE src/Thread.c -g -o build/output/test/test1 src/../test/test1.c -lpaho-mqtt3c -I src -lpthread -L build/output
cc -DNOSTACKTRACE src/Thread.c -g -o build/output/test/test2 src/../test/test2.c -lpaho-mqtt3c -I src -lpthread -L build/output
cc -DNOSTACKTRACE src/Thread.c -g -o build/output/test/sync_client_test src/../test/sync_client_test.c -lpaho-mqtt3c -I src -lpthread -L build/output
cc -DNOSTACKTRACE src/Thread.c -g -o build/output/test/test_mqtt4sync src/../test/test_mqtt4sync.c -lpaho-mqtt3c -I src -lpthread -L build/output
cc -g -o build/output/test/test3 src/../test/test3.c -lpaho-mqtt3cs -I src -Wl,--start-group -lpthread -lssl -lcrypto -Wl,--end-group -L build/output
cc -g -o build/output/test/test4 src/../test/test4.c -lpaho-mqtt3a -I src -lpthread -L build/output
cc -g -o build/output/test/test9 src/../test/test9.c -lpaho-mqtt3a -I src -lpthread -L build/output
cc -g -o build/output/test/test_mqtt4async src/../test/test_mqtt4async.c -lpaho-mqtt3a -I src -lpthread -L build/output
cc -g -o build/output/test/test5 src/../test/test5.c -lpaho-mqtt3as -I src -Wl,--start-group -lpthread -lssl -lcrypto -Wl,--end-group -L build/output
sudo make install
Swipe your finger across the fingerprint reader
mkdir -p build/output/samples
mkdir -p build/output/test
echo OSTYPE is Linux
OSTYPE is Linux
install -m 644 build/output/libpaho-mqtt3c.so.1.0 /usr/local/lib
install -m 644 build/output/libpaho-mqtt3cs.so.1.0 /usr/local/lib
install -m 644 build/output/libpaho-mqtt3a.so.1.0 /usr/local/lib
install -m 644 build/output/libpaho-mqtt3as.so.1.0 /usr/local/lib
install build/output/MQTTVersion /usr/local/bin
/sbin/ldconfig /usr/local/lib
ln -s libpaho-mqtt3c.so.1 /usr/local/lib/libpaho-mqtt3c.so
ln -s libpaho-mqtt3cs.so.1 /usr/local/lib/libpaho-mqtt3cs.so
ln -s libpaho-mqtt3a.so.1 /usr/local/lib/libpaho-mqtt3a.so
ln -s libpaho-mqtt3as.so.1 /usr/local/lib/libpaho-mqtt3as.so
install -m 644 src/MQTTAsync.h /usr/local/include
install -m 644 src/MQTTClient.h /usr/local/include
install -m 644 src/MQTTClientPersistence.h /usr/local/include
gcc -o paho_c_sub paho_c_sub.c -lpaho-mqtt3a