[syslog-ng] cannot find -lglib-2.0 while cross compiling

Pal Tamas folti at balabit.hu
Thu Jul 8 11:22:35 CEST 2010


Hi,

On Thu, Jul 08, 2010 at 10:33:24AM +0300, Hasan Ümit Ezerçe wrote:
> Hi,
> 
> I need to run syslog-ng on an itanium RHEL 4.7 server but cannot find
> any RPM's for ia64 arch. So decided to cross compile it. I am trying
> to build it on a centos 4.7 VM and get the following error:
> 
> ia64-unknown-linux-gnu-gcc  -Os -Wall   -o syslog-ng  main.o
> libsyslog-ng.a -lnsl -lrt  -Wl,-Bstatic  -lglib-2.0   -levtlog   -lnet
>  -Wl,-Bdynamic  -ldl
> /opt/crosstool/gcc-3.4.5-glibc-2.3.6/ia64-unknown-linux-gnu/lib/gcc/ia64-unknown-linux-gnu/3.4.5/../../../../ia64-unknown-linux-gnu/bin/ld:
> cannot find -lglib-2.0
> collect2: ld returned 1 exit status
> 
> However it seems that I already have glib-2.0 libs installed:
> $ pkg-config glib-2.0 --cflags --libs
> -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include  -lglib-2.0
> 
> Can you tell what am I missing here?
> 
> Best regards.
By default, pkg-config looks for the native libs on your system, not the
cross-compiled ones the cross compiler needs. Sadly, I don't have any
experience with cross-compiling but it'll go something like this:


For syslog-ng you need to cross-compile the following libs if you don't
need crypto support:
 - libintl
 - gettext
 - glib
 - eventlog
 - libnet

You have to cross compile and install them to an arbitrary directory.

In all cases, you have to tell ./configure and pkg-config to look for
needed files under the cross-compile directory. Ex.
Say, the holding directory for the cross compiled libs is
/usr/local/cross/ia64.

You have to set the following environment variables before running
./configure --prefix=/usr/local/cross/ia64/ && make:
PATH=/usr/local/cross/ia64/bin:$PATH
CFLAGS="-I/usr/local/cross/ia64/include $CFLAGS"
LDFLAGS="-L/usr/local/cross/ia64/lib $LDFLAGS"
PKG_CONFIG_PATH=/usr/local/cross/ia64/lib/pkgconfig

Good luck,
-- 
Pal Tamas/Folti
folti at balabit.hu


More information about the syslog-ng mailing list