On a FreeBSD 10.0 system, I attempted to build tcl8.6.1 in the usual way, in a subdirectory of tcl8.6.1/unix:

    ../configure
    make

This failed because the build created libtcl86.so.1, but then attempted to link with -ltcl86:

rm -f libtcl86.so.1
cc -shared -o libtcl86.so.1 regcomp.o regexec.o regfree.o regerror.o tclAlloc.o  tclAssembly.o tclAsync.o tclBasic.o tclBinary.o tclCkalloc.o  tclClock.o tclCmdAH.o tclCmdIL.o tclCmdMZ.o  tclCompCmds.o tclCompCmdsGR.o tclCompCmdsSZ.o tclCompExpr.o  tclCompile.o tclConfig.o tclDate.o tclDictObj.o  tclEncoding.o tclEnsemble.o  tclEnv.o tclEvent.o tclExecute.o tclFCmd.o tclFileName.o tclGet.o  tclHash.o tclHistory.o tclIndexObj.o tclInterp.o tclIO.o tclIOCmd.o  tclIORChan.o tclIORTrans.o tclIOGT.o tclIOSock.o tclIOUtil.o  tclLink.o tclListObj.o  tclLiteral.o tclLoad.o tclMain.o tclNamesp.o tclNotify.o  tclObj.o tclOptimize.o tclPanic.o tclParse.o tclPathObj.o tclPipe.o  tclPkg.o tclPkgConfig.o tclPosixStr.o  tclPreserve.o tclProc.o tclRegexp.o  tclResolve.o tclResult.o tclScan.o tclStringObj.o  tclStrToD.o tclThread.o  tclThreadAlloc.o tclThreadJoin.o tclThreadStorage.o tclStubInit.o  tclTimer.o tclTrace.o tclUtf.o tclUtil.o tclVar.o tclZlib.o  tclTomMathInterface.o tclUnixChan.o tclUnixEvent.o tclUnixFCmd.o  tclUnixFile.o tclUnixPipe.o tclUnixSock.o  tclUnixTime.o tclUnixInit.o tclUnixThrd.o  tclUnixCompat.o tclUnixNotfy.o   tclOO.o tclOOBasic.o tclOOCall.o tclOODefineCmds.o tclOOInfo.o  tclOOMethod.o tclOOStubInit.o tclLoadDl.o bncore.o bn_reverse.o bn_fast_s_mp_mul_digs.o  bn_fast_s_mp_sqr.o bn_mp_add.o bn_mp_and.o  bn_mp_add_d.o bn_mp_clamp.o bn_mp_clear.o bn_mp_clear_multi.o  bn_mp_cmp.o bn_mp_cmp_d.o bn_mp_cmp_mag.o  bn_mp_cnt_lsb.o bn_mp_copy.o  bn_mp_count_bits.o bn_mp_div.o bn_mp_div_d.o bn_mp_div_2.o  bn_mp_div_2d.o bn_mp_div_3.o  bn_mp_exch.o bn_mp_expt_d.o bn_mp_grow.o bn_mp_init.o  bn_mp_init_copy.o bn_mp_init_multi.o bn_mp_init_set.o  bn_mp_init_set_int.o bn_mp_init_size.o bn_mp_karatsuba_mul.o  bn_mp_karatsuba_sqr.o  bn_mp_lshd.o bn_mp_mod.o bn_mp_mod_2d.o bn_mp_mul.o bn_mp_mul_2.o  bn_mp_mul_2d.o bn_mp_mul_d.o bn_mp_neg.o bn_mp_or.o  bn_mp_radix_size.o bn_mp_radix_smap.o  bn_mp_read_radix.o bn_mp_rshd.o bn_mp_set.o bn_mp_set_int.o  bn_mp_shrink.o  bn_mp_sqr.o bn_mp_sqrt.o bn_mp_sub.o bn_mp_sub_d.o  bn_mp_to_unsigned_bin.o bn_mp_to_unsigned_bin_n.o  bn_mp_toom_mul.o bn_mp_toom_sqr.o bn_mp_toradix_n.o  bn_mp_unsigned_bin_size.o bn_mp_xor.o bn_mp_zero.o bn_s_mp_add.o  bn_s_mp_mul_digs.o bn_s_mp_sqr.o bn_s_mp_sub.o -Wl,-soname=libtcl86.so.1 -lz -lpthread -lm
cc -c -DNDEBUG -O2  -pipe -fvisibility=hidden -Wall -fPIC -DBUILD_tcl  -I"." 8.6\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DNO_VALUES_H=1 -DHAVE_LIMITS_H=1 -DHAVE_SYS_PARAM_H=1 -DUSE_THREAD_ALLOC=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1 -DHAVE_PTHREAD_ATFORK=1 -DTCL_THREADS=1 -DHAVE_ZLIB=1 -DMODULE_SCOPE=extern -DHAVE_CAST_TO_UNION=1 -DNDEBUG=1 -DTCL_CFG_OPTIMIZED=1 -DTCL_TOMMATH=1 -DMP_PREC=4 -DTCL_WIDE_INT_IS_LONG=1 -DHAVE_GETCWD=1 -DHAVE_MKSTEMP=1 -DHAVE_OPENDIR=1 -DHAVE_STRTOL=1 -DHAVE_WAITPID=1 -DHAVE_GETNAMEINFO=1 -DHAVE_GETADDRINFO=1 -DHAVE_FREEADDRINFO=1 -DHAVE_GAI_STRERROR=1 -DHAVE_STRUCT_ADDRINFO=1 -DHAVE_STRUCT_IN6_ADDR=1 -DHAVE_STRUCT_SOCKADDR_IN6=1 -DHAVE_STRUCT_SOCKADDR_STORAGE=1 -DHAVE_GETPWUID_R_5=1 -DHAVE_GETPWUID_R=1 -DHAVE_GETPWNAM_R_5=1 -DHAVE_GETPWNAM_R=1 -DHAVE_GETGRGID_R_5=1 -DHAVE_GETGRGID_R=1 -DHAVE_GETGRNAM_R_5=1 -DHAVE_GETGRNAM_R=1 -DHAVE_GETHOSTBYNAME_R_6=1 -DHAVE_GETHOSTBYNAME_R=1 -DHAVE_GETHOSTBYADDR_R_8=1 -DHAVE_GETHOSTBYADDR_R=1 -DHAVE_TERMIOS_H=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_TIME_H=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_GMTIME_R=1 -DHAVE_LOCALTIME_R=1 -DHAVE_MKTIME=1 -DHAVE_TM_GMTOFF=1 -DHAVE_STRUCT_STAT_ST_BLOCKS=1 -DHAVE_STRUCT_STAT_ST_BLKSIZE=1 -DHAVE_BLKCNT_T=1 -DHAVE_INTPTR_T=1 -DHAVE_UINTPTR_T=1 -DNO_UNION_WAIT=1 -DHAVE_SIGNED_CHAR=1 -DHAVE_LANGINFO=1 -DHAVE_CHFLAGS=1 -DHAVE_MKSTEMPS=1 -DHAVE_FTS=1 -DHAVE_SYS_IOCTL_H=1 -DHAVE_SYS_FILIO_H=1 -DTCL_UNLOAD_DLLS=1 -DHAVE_CPUID=1
cc -DNDEBUG -O2  -pipe -fvisibility=hidden  tclAppInit.o  -ltcl86 libtclstub86.a -lz -lpthread -lm   -o tclsh
cannot find -ltcl86


Based on what I saw in the base OS install, I strongly suspected that we could dispense with both the ".1" on the shared library suffix, and also with the whole TCL_TRIM_DOTS idiom altogether, so I tried this change:

: pa-bsd-6a; diff -u ../configure ../configure.freebsd
--- ../configure        2013-09-19 16:17:13.000000000 -0400
+++ ../configure.freebsd        2014-03-06 21:39:10.000000000 -0500
@@ -7829,10 +7829,10 @@
 fi

            # Version numbers are dot-stripped by system policy.
-           TCL_TRIM_DOTS=`echo ${VERSION} | tr -d .`
-           UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
-
-           TCL_LIB_VERSIONS_OK=nodots
+           # TCL_TRIM_DOTS=`echo ${VERSION} | tr -d .`
+           # UNSHARED_LIB_SUFFIX='${TCL_TRIM_DOTS}.a'
+           #
+           # TCL_LIB_VERSIONS_OK=nodots
            ;;
        Darwin-*)
            CFLAGS_OPTIMIZE="-Os"


With the above change in place, the build proceeds about 800 commands further, but fails to find a different library:

rm -f libtdbcmysql.so.1
cc -shared -o libtdbcmysql.so.1 tdbcmysql.o mysqlStubInit.o -ltdbcstub100 -ltdbcstub100 -ltclstub8.6
cannot find -ltdbcstub100

What the build has created in this case is libtdbcstub.a, but subsequent parts of the build are attempting to link with -ltdbcstub100.

There is evidence of this in

$ grep tdbcstub
tdbc_STUB_LIB_FILE="libtdbcstub.a"
TDBC_STUB_LIB_FILE="libtdbcstub.a"
-ltdbcstub100"
-ltdbcstub100"
-ltdbcstub100"
-ltdbcstub100"


At this point I decided to give up and report the problem :)