title: Why is the C code receiving the message "Undefined symbols for architecture x86_64:"?
body: <p>I want to build a c program with a custom makefile. The libs folder is in the parent folder and is linked in the makefie via LD flags (no global installation). When I build the program (a decoder) I receive neither errors nor warnings but the message:</p>
  
  <pre><code>-------------- Build: Debug in KIS01b (compiler: GNU GCC Compiler)---------------
  
  Running command: make -f Makefile.mak Debug
  gcc -o KIS01b KIS01b.o -L../libs/lib -lm
  Undefined symbols for architecture x86_64:
  "_av_frame_alloc", referenced from:
    _main in KIS01b.o
  "_av_frame_free", referenced from:
    _main in KIS01b.o
  "_av_free", referenced from:
    _main in KIS01b.o
  "_av_freep", referenced from:
    _decode in KIS01b.o
  "_av_get_channel_layout_nb_channels", referenced from:
    _decode in KIS01b.o
  "_av_malloc", referenced from:
    _decode in KIS01b.o
  "_av_packet_alloc", referenced from:
    _main in KIS01b.o
  "_av_packet_free", referenced from:
    _main in KIS01b.o
  "_av_parser_close", referenced from:
    _main in KIS01b.o
  "_av_parser_init", referenced from:
    _main in KIS01b.o
  "_av_parser_parse2", referenced from:
    _main in KIS01b.o
  "_avcodec_alloc_context3", referenced from:
    _main in KIS01b.o
  "_avcodec_find_decoder", referenced from:
    _main in KIS01b.o
  "_avcodec_free_context", referenced from:
    _main in KIS01b.o
  "_avcodec_open2", referenced from:
    _main in KIS01b.o
  "_avcodec_receive_frame", referenced from:
    _decode in KIS01b.o
  "_avcodec_register_all", referenced from:
    _main in KIS01b.o
  "_avcodec_send_packet", referenced from:
    _decode in KIS01b.o
  ld: symbol(s) not found for architecture x86_64
  clang: error: linker command failed with exit code 1 (use -v to see invocation)
  make: *** [KIS01b] Error 1
  Process terminated with status 2 (0 minute(s), 0 second(s))
  0 error(s), 0 warning(s) (0 minute(s), 0 second(s))
  </code></pre>
  
  <p>Here the makefile</p>
  
  <pre><code>CC = gcc
  CFLAGS = -c -Wall -I../libs/include
  LDFLAGS = -L../libs/lib -lm
  
  all: Release
  
  Debug: CFLAGS += -g
  Debug: KIS01b
  
  Release: KIS01b
  
  KIS01b: KIS01b.o
  $(CC) -o KIS01b KIS01b.o $(LDFLAGS)
  
  KIS01b.o: KIS01b.c
  $(CC) $(CFLAGS) KIS01b.c -o KIS01b.o
  
  clean:
  rm -f KIS01b.o KIS01b
  </code></pre>
  
  <p>And the c code is the one from this link: <a href="https://libav.org/documentation/doxygen/master/decode__audio_8c_source.html" rel="nofollow noreferrer">https://libav.org/documentation/doxygen/master/decode__audio_8c_source.html</a> </p>
  
  <p>Do you have any idea what could go wrong?</p>