# C++ Get Started Consumer/Producer Tutorial Does Not Work

**URL:** <https://forum.confluent.io/t/c-get-started-consumer-producer-tutorial-does-not-work/5860>\
**Category:** Site Feedback\
**Created:** [24 August 2022 01:12 UTC](https://forum.confluent.io/t/c-get-started-consumer-producer-tutorial-does-not-work/5860 "2022-08-24T01:12:42Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![adammpolak](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/adammpolak/32/2151_2.png) [@adammpolak](https://forum.confluent.io/u/adammpolak)\
**Post date:** [24 August 2022 01:12 UTC](https://forum.confluent.io/t/c-get-started-consumer-producer-tutorial-does-not-work/5860/1 "2022-08-24T01:12:42Z")

</div>

System Ubuntu 20.04

At the “Build Producer” step

> **[Apache Kafka and C/C++ - Getting Started Tutorial](https://developer.confluent.io/get-started/c/#build-producer)**
>
> How to develop your first Kafka client application in C/C++, which produces and consumes messages from a Kafka cluster, complete with configuration instructions.

When running `make producer` this error occurs

```auto
producer.c:67:37: warning: implicit declaration of function ‘arc4random’; did you mean ‘srandom’? [-Wimplicit-function-declaration]
   67 | const char *key = user_ids[arc4random() % ARR_SIZE(user_ids)];
      | ^ ~~~~~~~~~
      | srandom

```

The steps were followed exactly, this tutorial does not work.

---

<div class="post-metadata">

**Author:** ![adammpolak](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/adammpolak/32/2151_2.png) [@adammpolak](https://forum.confluent.io/u/adammpolak)\
**Post date:** [26 August 2022 15:51 UTC](https://forum.confluent.io/t/c-get-started-consumer-producer-tutorial-does-not-work/5860/2 "2022-08-26T15:51:06Z")

</div>

Also, when I changed the use of arc4random() to random() I then get a new error that seems to have to do with linking libraries

It is like the Makefile is not correct?

```auto
$ make producer
cc -Wall -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -lrdkafka -lglib-2.0 producer.c -o producer
/usr/bin/ld: /tmp/cczmdeDb.o: in function `g_autoptr_cleanup_generic_gfree':
producer.c:(.text+0x1f): undefined reference to `g_free'
/usr/bin/ld: /tmp/cczmdeDb.o: in function `glib_autoptr_clear_GError':
producer.c:(.text+0x41): undefined reference to `g_error_free'
/usr/bin/ld: /tmp/cczmdeDb.o: in function `glib_autoptr_clear_GKeyFile':
producer.c:(.text+0x81): undefined reference to `g_key_file_unref'
/usr/bin/ld: /tmp/cczmdeDb.o: in function `load_config_group':
producer.c:(.text+0x105): undefined reference to `g_key_file_get_keys'
/usr/bin/ld: producer.c:(.text+0x145): undefined reference to `g_log'
/usr/bin/ld: producer.c:(.text+0x17c): undefined reference to `g_key_file_get_string'
/usr/bin/ld: producer.c:(.text+0x1b8): undefined reference to `g_log'
/usr/bin/ld: producer.c:(.text+0x1e4): undefined reference to `rd_kafka_conf_set'
/usr/bin/ld: producer.c:(.text+0x20d): undefined reference to `g_log'
/usr/bin/ld: /tmp/cczmdeDb.o: in function `dr_msg_cb':
producer.c:(.text+0x28e): undefined reference to `rd_kafka_err2str'
/usr/bin/ld: producer.c:(.text+0x2ac): undefined reference to `g_log'
/usr/bin/ld: /tmp/cczmdeDb.o: in function `main':
producer.c:(.text+0x30e): undefined reference to `g_log'
/usr/bin/ld: producer.c:(.text+0x332): undefined reference to `g_key_file_new'
/usr/bin/ld: producer.c:(.text+0x35e): undefined reference to `g_key_file_load_from_file'
/usr/bin/ld: producer.c:(.text+0x38b): undefined reference to `g_log'
/usr/bin/ld: producer.c:(.text+0x392): undefined reference to `rd_kafka_conf_new'
/usr/bin/ld: producer.c:(.text+0x3cf): undefined reference to `rd_kafka_conf_set_dr_msg_cb'
/usr/bin/ld: producer.c:(.text+0x3ef): undefined reference to `rd_kafka_new'
/usr/bin/ld: producer.c:(.text+0x425): undefined reference to `g_log'
/usr/bin/ld: producer.c:(.text+0x5f5): undefined reference to `rd_kafka_producev'
/usr/bin/ld: producer.c:(.text+0x615): undefined reference to `rd_kafka_err2str'
/usr/bin/ld: producer.c:(.text+0x640): undefined reference to `g_log'
/usr/bin/ld: producer.c:(.text+0x67b): undefined reference to `g_log'
/usr/bin/ld: producer.c:(.text+0x68f): undefined reference to `rd_kafka_poll'
/usr/bin/ld: producer.c:(.text+0x6c3): undefined reference to `g_log'
/usr/bin/ld: producer.c:(.text+0x6d7): undefined reference to `rd_kafka_flush'
/usr/bin/ld: producer.c:(.text+0x6e6): undefined reference to `rd_kafka_outq_len'
/usr/bin/ld: producer.c:(.text+0x6f9): undefined reference to `rd_kafka_outq_len'
/usr/bin/ld: producer.c:(.text+0x716): undefined reference to `g_log'
/usr/bin/ld: producer.c:(.text+0x745): undefined reference to `g_log'
/usr/bin/ld: producer.c:(.text+0x754): undefined reference to `rd_kafka_destroy'
collect2: error: ld returned 1 exit status
make: *** [<builtin>: producer] Error 1

```

---

<div class="post-metadata">

**Author:** ![dtroiano](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/dtroiano/32/1961_2.png) [@dtroiano](https://forum.confluent.io/u/dtroiano)\
**Post date:** [31 August 2022 13:51 UTC](https://forum.confluent.io/t/c-get-started-consumer-producer-tutorial-does-not-work/5860/3 "2022-08-31T13:51:13Z")

</div>

Thank you for reporting this. I was able to repro both issues (`arc4random`, and linkage errors).

For the `arc4random` one, I like changing to `random` since `arc4random` looks to be BSD only. This is better than having to install a BSD compat package.

For the linker errors, yeah I think that the tutorial should have explicit `CFLAGS` and `LDLIBS`, and that `glib-2.0` should come first. Could you try the Makefile below and report back if it goes smoothly? I’ll update the tutorial if you can confirm.

```auto
ALL: producer consumer

CFLAGS=-Wall $(shell pkg-config --cflags glib-2.0 rdkafka)
LDLIBS=$(shell pkg-config --libs glib-2.0 rdkafka)

```

---

<div class="post-metadata">

**Author:** ![adammpolak](https://sea1.discourse-cdn.com/flex019/user_avatar/forum.confluent.io/adammpolak/32/2151_2.png) [@adammpolak](https://forum.confluent.io/u/adammpolak)\
**Post date:** [31 August 2022 15:20 UTC](https://forum.confluent.io/t/c-get-started-consumer-producer-tutorial-does-not-work/5860/4 "2022-08-31T15:20:13Z")

</div>

That fixed it thank you.

I am now able to complete the tutorial.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex019/uploads/confluentcommunity/original/1X/c49438c90c9df282e9996fdf6971be890c71b65a.svg) [@system](https://forum.confluent.io/u/system)\
**Post date:** [7 September 2022 15:20 UTC](https://forum.confluent.io/t/c-get-started-consumer-producer-tutorial-does-not-work/5860/5 "2022-09-07T15:20:55Z")

</div>

Closed on 7 September 2022 15:20 UTC

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.
