Introduction to ICU

The International Components for Unicode (ICU) package is a mature, widely used set of C/C++ libraries providing Unicode and Globalization support for software applications. ICU is widely portable and gives applications the same results on all platforms.



Upgrading this package to a new major version (for example, from 72.1 to 73.2) will require rebuilding of many other packages. If some packages that use the libraries built by icu4c-73 are rebuilt, they will use the new libraries while current packages will use the previous libraries. If the Linux application loader (/usr/lib/ determines that both the old and new libraries are needed, and a symbol (name of data or function) exists in both versions of the library, all references to the symbol will be resolved to the version appearing earlier in the breadth-first sequence of the dependency graph. This may result in the application failing if the definition of the data or the behavior of the function referred by the symbol differs in two versions. To avoid the issue, users will need to rebuild every package linked to an ICU library as soon as possible once ICU is updated to a new major version.

To determine what external libraries are needed (directly or indirectly) by an application or a library, run:

ldd <application or library> 

or to see only the directly needed libraries:

readelf -d  <application or library> | grep NEEDED

This package is known to build and work properly using an LFS 12.0 platform.

Package Information

ICU Dependencies


LLVM-16.0.5 (with Clang), and Doxygen-1.9.7 (for documentation)

Installation of ICU



This package expands to the directory icu.



If clang++ is available, it will be used in the mistaken belief that g++ might not support C++11, even though configure has tested for that. If using g++ there will be an unnecessary warning at the end of configure. Building with g++ also takes longer than the estimated SBU shown.

Install ICU by running the following commands:

cd source                                    &&

./configure --prefix=/usr                    &&

To test the results, issue: make check.

Now, as the root user:

make install


Installed Programs: derb, escapesrc, genbrk, genccode, gencfu, gencmn, gencnval, gendict, gennorm2, genrb, gensprep, icu-config, icuexportdata, icuinfo, icupkg, makeconv, pkgdata, and uconv
Installed Libraries:,,,,, and
Installed Directories: /usr/include/unicode, /usr/lib/icu, and /usr/share/icu

Short Descriptions


disassembles a resource bundle


converts \u escaped characters into unicode characters


compiles ICU break iteration rules source files into binary data files


generates C or platform specific assembly code from an ICU data file


reads in Unicode confusable character definitions and writes out the binary data


generates an ICU memory-mappable data file


compiles the converter's aliases file


compiles word lists into ICU string trie dictionaries


builds binary data files with Unicode normalization data


compiles a resource bundle


compiles StringPrep data from filtered RFC 3454 files


outputs ICU build options


outputs configuration information about the current ICU


extracts or modifies an ICU .dat archive


compiles a converter table


packages data for use by ICU


converts data from one encoding to another

is the data library

is the internationalization (i18n) library

is the ICU I/O (unicode stdio) library

is the test library

is the tool utility library

is the common library