bug-guile
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Building guile-1.6.1 on MacOS X -- fails to link


From: Norman Gray
Subject: Building guile-1.6.1 on MacOS X -- fails to link
Date: Tue, 17 Dec 2002 17:00:44 +0000 (GMT)

Greetings,

I'm having problems building guile-1.6.1 on MacOS X.  With a suitable
gcc flag and a small source edit it largely compiles, but finally
fails to link.  Details of that at the bottom.



1. Adjustment to configure for OS X

We need to use CPPFLAGS='-traditional-cpp' for ./configure, or else we
get _lots_ of warnings/errors, and the compilation of eval.c appears
to hang.

2. Patch to gc_os_dep.c to detect OS X correctly

Following patch is necessary or else we get the `unknown machine type'
error when compiling gc_os_dep.c:

*** libguile/gc_os_dep.c-orig   Mon Dec 16 21:19:39 2002
--- libguile/gc_os_dep.c        Mon Dec 16 22:32:42 2002
***************
*** 240,244 ****
  #   define mach_type_known
  # endif
! # if defined(macosx)
  #    define MACOSX
  #    define POWERPC
--- 240,244 ----
  #   define mach_type_known
  # endif
! # if defined(macosx) || defined(__APPLE__)
  #    define MACOSX
  #    define POWERPC

According to their compiler docs, testing for __APPLE__ appears to be
the preferred way to test whether you're on OS X.  With that addition,
the resulting set of defined preprocessor constants looks right-ish.





I had the same problems with guile-1.6.0 and 1.5.6,
but I've been using 1.4 perfectly happily for a while, so I've
never been forced to try terribly hard to debug the build problems
with the 1.6 series.

This is on OSX 10.1.5 -- it may not be fully bang up-to-date, but
it's pretty close.  I haven't tried building it on 10.2 yet.

Millie:builds/guile-1.6.1> uname -a
Darwin Millie.home 5.5 Darwin Kernel Version 5.5: Thu May 30 14:51:26 PDT 2002; 
root:xnu/xnu-201.42.3.obj~1/RELEASE_PPC  Power Macintosh powerpc

The system compiler is a conservative release of gcc:
Millie:builds/guile-1.6.1> cc --version
2.95.2




The final link fails, failing to find _environ to link against:

Millie:builds/guile-1.6.1> make
make  all-recursive
Making all in oop
Making all in goops
make[3]: Nothing to be done for `all'.
make[3]: Nothing to be done for `all-am'.
Making all in qt
Making all in md
make[3]: Nothing to be done for `all'.
Making all in time
make[3]: Nothing to be done for `all'.
make[3]: Nothing to be done for `all-am'.
Making all in libguile-ltdl
Making all in upstream
make  all-am
make[4]: Nothing to be done for `all-am'.
make[3]: Nothing to be done for `all-am'.
Making all in libguile
/bin/sh ../libtool --mode=link cc  -g -O2 -Wall -Wmissing-prototypes   -o 
libguile.la -rpath /Volumes/Maxwell/data/norman/tools/guile-1.6.1/lib 
-version-info 15:0:3 -export-dynamic -no-undefined alist.lo arbiters.lo 
async.lo backtrace.lo boolean.lo chars.lo continuations.lo debug.lo 
deprecation.lo dynl.lo dynwind.lo environments.lo eq.lo error.lo eval.lo 
evalext.lo extensions.lo feature.lo fluids.lo fports.lo gc.lo gc_os_dep.lo 
gdbint.lo gh_data.lo gh_eval.lo gh_funcs.lo gh_init.lo gh_io.lo gh_list.lo 
gh_predicates.lo goops.lo gsubr.lo guardians.lo hash.lo hashtab.lo hooks.lo 
init.lo ioext.lo iselect.lo keywords.lo lang.lo list.lo load.lo macros.lo 
mallocs.lo modules.lo numbers.lo objects.lo objprop.lo options.lo pairs.lo 
ports.lo print.lo procprop.lo procs.lo properties.lo random.lo rdelim.lo 
read.lo root.lo rw.lo scmsigs.lo script.lo simpos.lo smob.lo sort.lo srcprop.lo 
stackchk.lo stacks.lo stime.lo strings.lo strop.lo strorder.lo strports.lo 
struct.lo symbols.lo throw.lo values.lo variable.lo vectors.lo version.lo 
vports.lo weaks.lo symbols-deprecated.lo ramap.lo unif.lo filesys.lo posix.lo 
net_db.lo socket.lo regex-posix.lo ../libguile-ltdl/libguile-ltdl.la  -lm 
rm -fr .libs/libguile.la .libs/libguile.* .libs/libguile.*
cc -r -keep_private_externs -nostdlib -o .libs/libguile.12.3.0.dylib-master.o  
alist.lo arbiters.lo async.lo backtrace.lo boolean.lo chars.lo continuations.lo 
debug.lo deprecation.lo dynl.lo dynwind.lo environments.lo eq.lo error.lo 
eval.lo evalext.lo extensions.lo feature.lo fluids.lo fports.lo gc.lo 
gc_os_dep.lo gdbint.lo gh_data.lo gh_eval.lo gh_funcs.lo gh_init.lo gh_io.lo 
gh_list.lo gh_predicates.lo goops.lo gsubr.lo guardians.lo hash.lo hashtab.lo 
hooks.lo init.lo ioext.lo iselect.lo keywords.lo lang.lo list.lo load.lo 
macros.lo mallocs.lo modules.lo numbers.lo objects.lo objprop.lo options.lo 
pairs.lo ports.lo print.lo procprop.lo procs.lo properties.lo random.lo 
rdelim.lo read.lo root.lo rw.lo scmsigs.lo script.lo simpos.lo smob.lo sort.lo 
srcprop.lo stackchk.lo stacks.lo stime.lo strings.lo strop.lo strorder.lo 
strports.lo struct.lo symbols.lo throw.lo values.lo variable.lo vectors.lo 
version.lo vports.lo weaks.lo symbols-deprecated.lo ramap.lo unif.lo filesys.lo 
posix.lo net_db.lo socket.lo regex-posix.lo && cc -dynamiclib  -o 
.libs/libguile.12.3.0.dylib .libs/libguile.12.3.0.dylib-master.o  
-L../libguile-ltdl/.libs -lguile-ltdl -lm -lc -install_name 
/Volumes/Maxwell/data/norman/tools/guile-1.6.1/lib/libguile.12.dylib 
-compatibility_version 16 -current_version 16.0
ld: Undefined symbols:
_environ
/usr/bin/libtool: internal link edit command failed
make[2]: *** [libguile.la] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2


I imagine the fix is pretty simple, but I'm trying desperately not to
find it myself, since (a) libtool scares the hell out of me, and (b) OS
X is my I-don't-know-how-it-works-so-I-CANNOT-tweak-it platform, and I'm
jealously guarding my ignorance about its internals.  Nevertheless, I hope
this report is specific enough that it'll afford someone a `doh!' moment.

All the best,

Norman


-- 
---------------------------------------------------------------------------
Norman Gray                        http://www.astro.gla.ac.uk/users/norman/
Physics and Astronomy, University of Glasgow, UK     address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]