I'm attaching the build logs.
This should work fine, and the routines should be there in util/configlexer.c.
The ..destroy() call is even gated with an ifdef that detected whether that function exists ... looks like something is going wrong.
Can you try the build flag --disable-flto?
I'm using GCC 6.3 and ld from GNU Binutils 2.27.
Your compiler seems to be broken?  It works for Bruce and it works for me.  The disable-flto flag makes configure simply not check and not add the -flto flag to compilation.  So that flag should be completely harmless and omit an optimisation option.
May be a fresh install/compile environment.  Look in config.log at the 'C compile cannot create executables' part, where configure keeps extensive logs about what is going on.
My mistake: I was passing --disable-flto as a flag to gcc, not ./configure.
So running `./configure --disable-flto && make` yields the same results, like Bruce reported.
Unbound uses flex (lex) and bison (yacc) to make the file that the link error is about.  It could be that your version of lex and yacc are broken somehow and produce lex or yacc results that do not contain the output needed?
Or, do you have them installed even?  They are detected by configure (there are different versions on different systems).
Unbound ships with flex and yacc output that is fine, created over here (on Fedora 25).  But they are overwritten during the compile process when you have the tools installed.
I am using flex 2.6.3.  We updated to that on January 1st.
And let me note that unbound 1.6.0 builds fine in my environment.
I've got flex-2.6.3 and bison-3.0.4. Uninstalling flex and/or bison (so unbound uses the internal copy) does not help.
> unbound uses the internal copy) does not help.
So the new flex seems to be the culprit. I'll report back if I can pin this down further.
There are no obvious differences that could cause this between 1.6.0 and 1.6.1.  The util/configlexer.lex file is processed by flex.  It is prepended with util/configyyrename.h to rename a lot of yy content so that it does not name-collide with others.
The -t flag should make flex output the result to stdout.
Actually unbound does not use flex multiple times; so the rename part is not strictly necessary (combined with library symbol export features in the dynamic linker; because the user of libunbound might also want to use flex).
I reverted my system to flex-2.6.1 and unbound-1.6.1 built without issues.
I then restored flex-2.6.3 and tried to rebuild unbound-1.6.1 and it failed.
config.h and configyyrename.h are identical in both builds.
Doing a simple diff, configlexer.c is quite different between the two builds, however the string 'ub_c' does not show up in either file.
I do not understand the output of flex, configlexer.c, but I will attach the two files.
The unbound executable fails to build with this file.
During compilation my compiler warns of double #defines for them.  I try to #define them to a different value, but flex #defines them to themselves?  Why is flex outputting this list of #define yy_ <the same>?
and fixed in flex 2.6.4.
I can confirm that unbound-1.6.1 builds find with the flex git master.
Unfortunately, the flex maintainers have not released flex-2.6.4.