Re: Can't find the library . . .



Hi Nolan.

On Sat, 2003-10-25 at 00:58, Nolan J. Darilek wrote:
> I've been attempting to build the latest CVS gnopernicus, as I've
> upgraded and downgraded numerous debian packages and my old compile no
> longer works. I'm receiving the following error, though, and was
> hoping someone could suggest something:
> 
> /bin/sh ../../libtool --mode=link gcc  -g -O2   -o test  test.o ../libsrconf/libsrconf.la ../../srutil/libsrutil.la -Wl,--export-dynamic -pthread -L/usr/local/stow/atk/lib -L/usr/local/stow/at-spi/lib -lgconf-2 -lcspi -lspi -lbonobo-2 -lgtk-x11-2.0 -lbonobo-activation -lORBit-2 -lgthread-2.0 -lgdk-x11-2.0 -latk-1.0 -lgdk_pixbuf-2.0 -lm -lpangoxft-1.0 -lpangox-1.0 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -ldl -lglib-2.0   -lpopt 
> mkdir .libs
> libtool: link: cannot find the library `'
> make[3]: *** [test] Error 1
> make[3]: Leaving directory `/home/nolan/src/cvs/gnome/gnopernicus/srconf/test'
> 
> Any ideas what might be causing this? More importantly, which library
> can't be found?

This is usually a sign of one of libtools scripts becoming corrupted or
horribly confused in some other way.

The first thing to try and track down the problem (or to just plain make
it disappear) is to start with a very clean gnopernicus source tree. You
could check out a fresh copy. Alternatively, if you are on a slow link,
the attached Python script can be used to remove all files that are not
known to CVS. Just change to the gnopernicus directory and run
"super-clean.py ." (the '.' is important, since it's the directory to
start cleaning from).

Then try the rebuild again. If it still fails, I would suggest you go
back and rebuild atk and at-spi (since they look like the ones you have
built yourself, rather than installed from Debian packages). Again,
start from a clean version so that there are no old libtool scripts
hanging around.

If all of that fails, report back and maybe we can think of something
else. But this really looks like some of the scripts to make library
compiling a bit more portable have become confused. Since I cannot say
which script it is for sure, recreating all of them is the only way
(sorry -- it's time consuming, I know).

Cheers,
Malcolm

#!/usr/bin/env python
import sys, os, stat

def main(argv = None):
	if len(argv) != 1:
		print >> sys.stderr, "Calling format: super-clean.py <start-dir>"
		sys.exit(1)
	removals = []
	os.path.walk(argv[0], cleaner, removals)
	remove(removals)

def cleaner(removals, dirname, names):
	"""
	Record the name of any file not in the appropriate CVS/Entries file. The
	'names' list is adjusted appropriately so that any directories scheduled
	for removal are not recursed into.
	"""
	if 'CVS' not in names:
		print >> sys.stderr, "Bad directory %r" % dirname
		sys.exit(1)
	files = open('%s/CVS/Entries' % dirname).readlines()
	# Don't descend into the CVS directory, but we don't want to remove it
	# either.
	names.remove('CVS')
	keepers = [line.split('/')[1] for line in files if line != "D\n"]
	for file in names[:]:
		if file not in keepers:
			removals.append(os.path.join(dirname, file))
			names.remove(file)

def remove(removals):
	"""
	Remove all of the files in the 'removals' list.
	"""
	for file in removals:
		if stat.S_ISDIR(os.lstat(file)[0]):
			os.system('rm -rf %s' % file)
		else:
			os.remove(file)

if __name__ == '__main__':
	main(sys.argv[1:])


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