1

I am not an experienced programmer/developer/software engineer, but I need to get this older version of guile-2.0.11 built "by hand" rather than using home-brew (which installs the latest version of guile). I downloaded the tarball for guile-2.0.11 from the GitHub repository, extracted it and ran the shell script autogen.sh. This produced a configure executable which ran to completion and generated a Makefile. When I run make, the build continues until I get the this error:

Undefined symbols for architecture x86_64:
"_clock_getcpuclockid", referenced from:
_scm_init_stime in libguile_2.0_la-stime.o
"_ffi_call", referenced from:
 _scm_i_foreign_call in libguile_2.0_la-foreign.o

and 16 more "ffi" similar messages. Then the error messages finishes

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see      invocation)
make[3]: *** [libguile-2.0.la] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-recursive] Error 1

The linker apparently can't find these symbols. The explicit link command is quite extensive..it shows all the options, include and library paths if I use "make V=1". Here is the beginning, showing the options and paths:

Applications/Xcode.app/Contents/Developer/usr/bin/make  all-am
/bin/sh ../libtool  --tag=CC   --mode=link gcc -  I/usr/local/opt/gettext/include -I/usr/local/include -  I/usr/local/opt/readline/include -  I/usr/local/Cellar/gettext/0.19.8.1/include -D_THREAD_SAFE  -Wall -  Wmissing-prototypes -Wdeclaration-after-statement -Wpointer-arith -Wswitch-  enum -fno-strict-aliasing -fwrapv -fvisibility=hidden -  I/usr/local/Cellar/bdw-gc/7.6.0/include -g -O2 -L/usr/local/Cellar/bdw-  gc/7.6.0/lib -lgc -L/usr/local/opt/libffi/lib                -liconv -  L/usr/local/opt/gettext/lib -lintl -R/usr/local/opt/gettext/lib -Wl,-  framework -Wl,CoreFoundation -L/usr/local/lib -lunistring -R/usr/local/lib        -version-info 29:2:7 -export-dynamic -no-undefined   -L/usr/local/opt/gettext/lib -L/usr/local/lib -L/usr/local/opt/readline/lib     -L/usr/local/Cellar/gettext/0.19.8.1/lib -o libguile-2.0.la -rpath /usr/local/lib

Then there is libtool.

libtool: link: gcc -dynamiclib  -o .libs/libguile-2.0.22.dylib    .libs/libguile_2.0_la-alist.o .libs/libguile_2.0_la-arbiters.o   .libs/libguile_2.0_la-array-handle.o

and many many more xxxx.o

then

-Wl,-force_load,../lib/.libs/libgnu.a  -L/usr/local/Cellar/bdw-  gc/7.6.0/lib -lgc -L/usr/local/opt/libffi/lib -L/usr/local/opt/gettext/lib   -L/usr/local/lib -L/usr/local/opt/readline/lib -  L/usr/local/Cellar/gettext/0.19.8.1/lib -lintl -lunistring -liconv -lgmp -  lltdl -lm  -g -O2 -Wl,-framework -Wl,CoreFoundation   -install_name    /usr/local/lib/libguile-2.0.22.dylib -compatibility_version 30 - current_version 30.2 -Wl,-single_module

The up-to-date version of ffilib is in the symlink /usr/local/opt/libffi/lib which is in the ld path, so I would think that the linker could find it. Any help would be greatly appreciated.

Federico klez Culloca
  • 26,308
  • 17
  • 56
  • 95
John
  • 31
  • 3
  • I found the solution to part of this problem. All the undefined symbols related to _ffi_ are due to a linker flag omission. The answer is here, [link](https://stackoverflow.com/questions/45062678/where-are-ffi-symbols-defined/45103652#45103652). However the first error related to "_clock_getcpuclockid" still prevents the build. – John Jul 14 '17 at 13:37

1 Answers1

0

This problem is really two problems: (1) the undefined symbol "_clock_getcpuclockid" and (2) all the "ffi" undefined symbols. The answer to the second problem is here and the answer to the first problem is here. There may be other solutions but these resulted in the installation of guile-2.0.11 on my macOS Sierra (10.12.5),

John
  • 31
  • 3