1

I have 3 files: tester.c, knnring_sequential.c, knnring.h.

I compile them with the sequence:

gcc-7 -c knnring_sequential.c -o knnring_sequential.o
ar rcs knnring_sequential.a knnring_sequential.o
gcc-7 -o tester tester.c knnring_sequential.a

When I am trying to link with gcc-7, I get the following error message:

Undefined symbols for architecture x86_64:
  "___asan_init", referenced from:
      __GLOBAL__sub_I_00099_0_knnring_sequential.c in knnring_sequential.a(knnring_sequential.o)
  "___asan_report_load4", referenced from:
      _insert in knnring_sequential.a(knnring_sequential.o)
      _quickSelect in knnring_sequential.a(knnring_sequential.o)
      _quickSort in knnring_sequential.a(knnring_sequential.o)
      _kNN in knnring_sequential.a(knnring_sequential.o)
  "___asan_report_load8", referenced from:
      _insert in knnring_sequential.a(knnring_sequential.o)
      _quickSelect in knnring_sequential.a(knnring_sequential.o)
      _quickSort in knnring_sequential.a(knnring_sequential.o)
      _compute_distances in knnring_sequential.a(knnring_sequential.o)
      _kNN in knnring_sequential.a(knnring_sequential.o)
  "___asan_report_load_n", referenced from:
      _kNN in knnring_sequential.a(knnring_sequential.o)
  "___asan_report_store4", referenced from:
      _insert in knnring_sequential.a(knnring_sequential.o)
      _kNN in knnring_sequential.a(knnring_sequential.o)
  "___asan_report_store8", referenced from:
      _insert in knnring_sequential.a(knnring_sequential.o)
      _compute_distances in knnring_sequential.a(knnring_sequential.o)
      _kNN in knnring_sequential.a(knnring_sequential.o)
  "___asan_version_mismatch_check_v8", referenced from:
      __GLOBAL__sub_I_00099_0_knnring_sequential.c in knnring_sequential.a(knnring_sequential.o)

The code can be found here https://github.com/alextsigilis/knnring/blob/master/src/knnring_sequential.c

What's wrong?

Jonathan Leffler
  • 730,956
  • 141
  • 904
  • 1,278
sted
  • 83
  • 9
  • 2
    Are you on a Mac? Regardless of whether you are or not, the problem appears to be a missing library, or an incomplete library, for the ASAN (Address Sanitizer) portion of GCC. Where did you get the `gcc-7` from? Have you been able to compile and link any other code with it? Are you sure you've shown all the options you used? (If so, why aren't you using `-Wall -Wextra -Werror`? They help prevent lots of problems.) – Jonathan Leffler Nov 30 '19 at 03:52

0 Answers0