ICU static lib problem

Huver huver at amgraf.com
Mon May 21 19:22:35 UTC 2012


Hi,

This is regaring problem report 154086: libsicui18n.a contains no symbols.

Actually, several of the static ICU libraries got their symbols removed,
not just libsicui18n.a.  And the reason is in the file "source/icudefs.mk.in":

	INSTALL-L = $(INSTALL_PROGRAM)
	#INSTALL-L = $(INSTALL_DATA)

The INSTALL_PROGRAM gets expanded (by configure) to:

	install -s -o root -g wheel -m 555

and that "-s" strips all recognized symbols when a library file is being
installed -- during "make install".

The original "INSTALL-L as INSTALL_DATA" worked, as configure sets it to:

	install -c -o root -g wheel -m 444

Since the static libraries, when built, do have symbols in them, this "no-
strip" install will work.

Statically linking with ICU libraries can result in very huge executable file
size (as "-lstdc++" is almost always unavoidable), so I'm not sure how
practical it is.  However, since the "build options" include one for static,
it has better make usable libraries, right? ;-)


-huver  huver at amgraf.com


More information about the freebsd-office mailing list