This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Issue on accessing libconv

Hi Experts,

I am using am335x Linux SDK EVMSK.

I am getting an error whenever the glib based program is getting command line arguments as string.

 -Warning ** Error converting string: Conversion from character set 'utf-8' to 'utf-16le' is not supported"

It looked like libiconv package is dependent. So I cross compiled the iconv binary and iconv.so* files and copied to the /usr/lib/ but the issue still persist.

The function g_convert() internally uses the system call iconv(). Now how to enable this function ?

  • Hi,

    lyf sci said:
    It looked like libiconv package is dependent.

    During my research I found the following statement in the DEPENDANCIES txt file in libiconf sources (I downloaded them from the following repository: https://www.gnu.org/software/libiconv/) :

    "No packages need to be installed before GNU libiconv is installed."

    Which libiconf sources do you use? Can you try downloading from gnu.org and install as described in the README file:

    As usual for GNU packages:

        $ ./configure --prefix=/usr/local
        $ make
        $ make install

    After installing GNU libiconv for the first time, it is recommended to
    recompile and reinstall GNU gettext, so that it can take advantage of
    libiconv.

    On systems other than GNU/Linux, the iconv program will be internationalized
    only if GNU gettext has been built and installed before GNU libiconv. This
    means that the first time GNU libiconv is installed, we have a circular
    dependency between the GNU libiconv and GNU gettext packages, which can be
    resolved by building and installing either
      - first libiconv, then gettext, then libiconv again,
    or (on systems supporting shared libraries, excluding AIX)
      - first gettext, then libiconv, then gettext again.
    Recall that before building a package for the second time, you need to erase
    the traces of the first build by running "make distclean".

    This library can be built and installed in two variants:

      - The library mode. This works on all systems, and uses a library
        `libiconv.so' and a header file `<iconv.h>'. (Both are installed
        through "make install".)

        To use it, simply #include <iconv.h> and use the functions.

        To use it in an autoconfiguring package:
        - If you don't use automake, append m4/iconv.m4 to your aclocal.m4
          file.
        - If you do use automake, add m4/iconv.m4 to your m4 macro repository.
        - Add to the link command line of libraries and executables that use
          the functions the placeholder @LIBICONV@ (or, if using libtool for
          the link, @LTLIBICONV@). If you use automake, the right place for
          these additions are the *_LDADD variables.
        Note that 'iconv.m4' is also part of the GNU gettext package, which
        installs it in /usr/local/share/aclocal/iconv.m4.

      - The libc plug/override mode. This works on GNU/Linux, Solaris and OSF/1
        systems only. It is a way to get good iconv support without having
        glibc-2.1.
        It installs a library `preloadable_libiconv.so'. This library can be used
        with LD_PRELOAD, to override the iconv* functions present in the C library.

        On GNU/Linux and Solaris:
            $ export LD_PRELOAD=/usr/local/lib/preloadable_libiconv.so

        On OSF/1:
            $ export _RLD_LIST=/usr/local/lib/preloadable_libiconv.so:DEFAULT

        A program's source need not be modified, the program need not even be
        recompiled. Just set the LD_PRELOAD environment variable, that's it!

    Hope this helps.

    Best Regards,
    Yordan