After installing 1.9.1 on Mac OS X (10.5.7), and updating $PATH to point to the installation 'bin' directory:

% guile-tools compile -o ack.go ack.scm
ERROR: In procedure dynamic-link:
ERROR: file: "libguile-srfi-srfi-1-v-4", message: "dlopen(libguile- srfi-srfi-1-v-4.so, 9): image not found"
%

The correct suffix for dynamically-linked libraries on Mac OS X is ".dylib".

% find dev/guile/guile-1.9.1/b/I -name \*srfi-1-v-4\* -print
dev/guile/guile-1.9.1/b/I/lib/libguile-srfi-srfi-1-v-4.4.dylib
dev/guile/guile-1.9.1/b/I/lib/libguile-srfi-srfi-1-v-4.a
dev/guile/guile-1.9.1/b/I/lib/libguile-srfi-srfi-1-v-4.dylib
dev/guile/guile-1.9.1/b/I/lib/libguile-srfi-srfi-1-v-4.la
%

However, even if I make a symlink with the .so suffix, I still get the same error reported. If I also set LD_LIBRARY_PATH to point to this directory, then it works. But this isn't necessary to simply invoke the "guile" or "guile-tools" executables. Perhaps they should ensure that the installation library directory gets searched via one of the environment variables dlopen checks, or check that directory explicitly if dlopen fails? They do have built-in knowledge of where to find the Scheme code they want to load; why should the supplied executable libraries be different?

Ken


Reply via email to