在macOS Sierra上构建guile-2.0.11失败:架构x86_64的未定义符号

我不是一个经验丰富的程序员/开发人员/软件工程师,但我需要“手动”构建这个旧版本的guile-2.0.11,而不是使用home-brew(安装最新版本的guile)。 我从GitHub存储库下载了guile-2.0.11的tarball,将其解压缩并运行shell脚本autogen.sh。 这产生了一个配置可执行文件,它可以运行完成并生成一个Makefile。 当我运行make时,构建将继续,直到我收到此错误:

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 

还有16条“ ffi ”类似的消息。 然后错误消息完成

 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 

链接器显然找不到这些符号。 显式链接命令非常广泛..如果我使用“make V = 1”,它会显示所有选项,包含和库路径。 这是开始,显示选项和路径:

 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 

然后是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 

还有更多xxxx.o

然后

 -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 

ffilib的最新版本位于ld路径中的符号链接/ usr / local / opt / libffi / lib中,因此我认为链接器可以找到它。 任何帮助将不胜感激。

这个问题实际上是两个问题:(1)未定义的符号“_clock_getcpuclockid”和(2)所有“ ffi ”未定义的符号。 第二个问题的答案就在这里 ,第一个问题的答案就在这里 。 可能还有其他解决方案,但这些导致我的macOS Sierra上安装了guile-2.0.11(10.12.5),