To port some existing code from FreeBSD to Ubuntu (22.04) with the libbsd-dev package installed, I am encountering a problem in the linking phase: undefined reference to 'strnstr'. Code:
#include <bsd/string.h>#include <stdio.h> int main(int argc, char **argv) { char * ppl = "World citizens"; char * s = strnstr(ppl, "c", strlen(ppl)); printf("Hello, %s\n", s);}The command used for building and linking is: cc -lbsd test-strnstr.c. This command invokes gcc.
If called explicitly with clang (clang -lbsd test-strnstr.c) it works. It also compiles, links and runs fine on MacOS (without the 'bsd/' part in the first #include).
What can be the reason that it won't link with the strnstr() in libbsd (and libbsd.a is installed /usr/lib/aarch64-linux-gnu/)?