What is libintl.h and where can I get it?
GitOsx LionGit Problem Overview
Trying to do a make install of git from source, and it keep kicking up the error:
make install
* new build flags or prefix
CC credential-store.o
In file included from credential-store.c:1:
In file included from ./cache.h:8:
./gettext.h:17:11: fatal error: 'libintl.h' file not found
# include <libintl.h>
^
1 error generated.
make: *** [credential-store.o] Error 1
No amount of Googling has turned up anything on lib.intl.h. What is this elusive library, and how can I get it so I can finally install git?
Git Solutions
Solution 1 - Git
FWIW on OSX with El Capitan and homebrew, I did a:
-
I wasn't sure if the El Capitan upgrade had broken something, so first I made sure I had the latest gettext:
$ brew reinstall gettext
Then I had to re-link by doing:
$ brew unlink gettext && brew link gettext --force
After that, other tools were able to find it, and life went back to normal.
Solution 2 - Git
Depending on the system, it's probably part of the GNU C library (glibc).
Note that just installing the file libintl.h
isn't likely to do you any good.
On Debian-based systems (including Debian, Ubuntu, and Linux Mint), it's part of the libc6-dev
package, installed with:
sudo apt-get install libc6-dev
Since you're using Mac OS X, a Google search for "libintl.h OSX" shows a lot of people having similar problems. According to the INSTALL
file in the Git sources:
> Set NO_GETTEXT
to disable localization support and make Git only use English. Under autoconf
the configure
script will do this automatically if it can't find libintl
on the system.
Solution 3 - Git
I learned libintl comes from libgettext. If you already installed gettext by Homebrew, you would see:
$ locate libintl
/usr/local/Cellar/gettext/0.18.3.2/lib/libintl.8.dylib
/usr/local/Cellar/gettext/0.18.3.2/lib/libintl.a
/usr/local/Cellar/gettext/0.18.3.2/lib/libintl.dylib
<..snip..>
and the following works for me on the issue of "library not found for -lintl"
ln -s /usr/local/Cellar/gettext/0.18.3.2/lib/libintl.* /usr/local/lib/
Solution 4 - Git
If you can find the proper version of Libtools (from http://ftp.gnu.org/gnu/libtool/) you might find it in the package..
Otherwise you can use below to the configure to remove this dependency:
./configure --disable-nls
Solution 5 - Git
When packages are looking for this file, install or build the GNU gettext package. This packages "installs" ${prefix}/include/libintl.h
, among other things
Solution 6 - Git
In order to install the newest version of git on OSX Lion this is what I did:
*Note that if you do not have git already installed you can just download it from the site and unpack it in to ~/src/git
I also recommend doing a whereis git
to see if you already have it installed so you know what to set your prefix to. Mine was /usr/bin/git
so I set my prefix to just /usr
mkdir ~/src
git clone https://github.com/git/git.git
cd git
make configure
./configure --prefix=/usr
make
make install
By doing it this way I did not have to download any extra libraries or do any hunting on forums for answers. Thanks to automake I know that git is setup for my system and will run without any hiccups.
Solution 7 - Git
Those trying to build Git on macOS as of May 2021, and want internationalization I found this to be the best, non-destructive solution:
brew install gettext
Find the location of the libintl headers and libs:
find /opt -name "libintl.*" -print
/opt/homebrew/include/libintl.h
/opt/homebrew/lib/libintl.dylib
/opt/homebrew/lib/libintl.8.dylib
/opt/homebrew/lib/libintl.a
/opt/homebrew/Cellar/gettext/0.21/include/libintl.h
/opt/homebrew/Cellar/gettext/0.21/lib/libintl.dylib
/opt/homebrew/Cellar/gettext/0.21/lib/libintl.8.dylib
/opt/homebrew/Cellar/gettext/0.21/lib/libintl.a
Note the location of the gettext directories.
Now run the following (it might slightly differ if your CFLAGS and LDFLAGS are already set. Just ensure the gettext paths are included with whatever else is already there):
make configure
./configure "LDFLAGS=$LDFLAGS -L/opt/homebrew/Cellar/gettext/0.21/lib" \
"CFLAGS=-I/opt/homebrew/Cellar/gettext/0.21/include"
After it has configured properly you should be able to build it with make
.
Solution 8 - Git
This looks promising - http://code.google.com/p/rudix/downloads/detail?name=static-libintl-0.18.1.1-5.pkg&can=2&q= - appears to contain libintl as a pkg. It resolved a dependency on libintl for me.
Solution 9 - Git
If you don't care about localization and are ok with just English, define NO_GETTEXT
in the Makefile
From the Makefile
:
> Define NO_GETTEXT if you don't want Git output to be translated. > A translated Git requires GNU libintl or another gettext implementation, > plus libintl-perl at runtime.
Solution 10 - Git
install macport and type on terminal
sudo port install libcxx
Solution 11 - Git
If you're trying to compile AssaultCube and are getting this error (should complain about "INTL/libintl.h" being missing), you have to take INTL.framework from the AssaultCube app contents and put it in /Library/Frameworks. No packages from MacPorts, HomeBrew, etc. can fix it. Very very annoying how many open source projects fail to compile.
Solution 12 - Git
> What is this elusive library, and how can I get it so I can finally install git?
From the GNU manual:
> 11.21 libintl.h
>
> Libintl is a library that provides native language support to programs.
>
> Defines the macros __USE_GNU_GETTEXT
,
> __GNU_GETTEXT_SUPPORTED_REVISION
, and declares the functions
> gettext
, dgettext
, dcgettext
, ngettext
, dngettext
,
> dcngettext
, textdomain
, bindtextdomain
,
> bind_textdomain_codeset
.
>
> Documentation:
>
> * http://www.gnu.org/software/libc/manual/html_node/Message-catalogs-with-gettext.html,
> * http://www.gnu.org/software/gettext/manual/html_node/gettext.html.
>
> Gnulib module: gettext
>
> Portability problems fixed by Gnulib, if GNU gettext is installed:
>
> This header file is missing on some platforms: Mac OS X 10.5, FreeBSD
> 6.0, OpenBSD 3.8, Minix 3.1.8, AIX 5.1, HP-UX 11, IRIX 6.5, OSF/1 5.1, mingw, MSVC 9, Interix 3.5, BeOS.
>
> The functions cannot deal with GNU .mo files with system-dependent
> strings (of major version 1 or of minor version 1) on some non-glibc
> platforms: NetBSD 3.0, Solaris 10.
You can get libintl.h
from Gnulib, which is The GNU Portability Library. It is available for download from GNU's Savannah.
The Gnulib web page also states:
> Gnulib does not make releases. It is intended to be used at the source > level. > > You can browse the current gnulib sources on Savannah. > > To use Gnulib, you can retrieve its source code and its history via > anonymous Git, using the following shell command: > > git clone git://git.savannah.gnu.org/gnulib.git > > Developers can also retrieve the source code via non-anonymous Git, > for purposes of doing commits; for details, please see Gnulib's > top-level README file. > > After you have the sources, run ./gnulib-tool --help. For help and > more info, see the documentation and other resources below.
Solution 13 - Git
The following worked for me:
brew reinstall gettext
brew unlink gettext && brew link gettext --force
- For compilers to find libpq you may need to set:
export LDFLAGS="-L/usr/local/opt/libpq/lib"
export CPPFLAGS="-I/usr/local/opt/libpq/include"
For e.g, while installing Postgis on my system I used ./configure
with the following flags
./configure CPPFLAGS="-I/usr/local/opt/libpq/include" LDFLAGS="-L/usr/local/opt/libpq/lib"
Solution 14 - Git
I have a fresh install of OSX Catalina (10.15.7) and was able to obtain /usr/local/lib/libintl.*
just by making sure homebrew was fully updated and upgraded:
Before:
user@mac:/usr/local/lib$ ls libintl*
ls: libintl*: No such file or directory
Updating / upgrading homebrew:
$ brew update
...and just to be sure I decided to run it again
$ brew update
...which told me I first needed to run
$ git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
...third time's the charm?
$ brew update
...which told me I should run
$ brew upgrade
And after that, /usr/local/lib/libintl.*
was populated:
user@mac:/usr/local/lib$ ls libintl*
libintl.8.dylib libintl.a libintl.dylib
I think this gets you what you were looking for!