Build of guile-2.0.11 on macOS Sierra fails: Undefined symbols for architecture x86_64

巧了我就是萌 提交于 2019-12-25 14:45:30

问题


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.


回答1:


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),



来源:https://stackoverflow.com/questions/45013549/build-of-guile-2-0-11-on-macos-sierra-fails-undefined-symbols-for-architecture

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!