Compiling ipmiutils for uClibc
Harald Jensås
hjensas at online.no
Sun Oct 2 16:36:57 UTC 2005
Hi,
I am trying to compile ipmiutils in an i386 uClibc environment.
I downloaded the root_fs_i386.ext2.bz2, unzipped, loop mounted it and
did a cp -a to move everything to a free partition.
Reboot the system into the build environment sucsessfully..
So, when I try to compile ipmiutil-1.6.8.tar.gz
<http://prdownloads.sourceforge.net/ipmiutil/ipmiutil-1.6.8.tar.gz?download>
- from http://ipmiutil.sourceforge.net whithout using the freeipmi
library I get these errors:
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -DLINUX
-DLOCALEDIR=\"/usr/share/locale\" -g -O2 -c showsel.c
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -DLINUX
-DLOCALEDIR=\"/usr/share/locale\" -g -O2 -c events.c
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -DLINUX
-DLOCALEDIR=\"/usr/share/locale\" -g -O2 -c ipmicmd.c
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -DLINUX
-DLOCALEDIR=\"/usr/share/locale\" -g -O2 -c imbapi.c
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -DLINUX
-DLOCALEDIR=\"/usr/share/locale\" -g -O2 -c ipmimv.c
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -DLINUX
-DLOCALEDIR=\"/usr/share/locale\" -g -O2 -c ipmild.c
gcc -DHAVE_CONFIG_H -I. -I. -I.. -I.. -DLINUX
-DLOCALEDIR=\"/usr/share/locale\" -g -O2 -c ipmignu.c
gcc -g -O2 -o showsel showsel.o events.o ipmicmd.o imbapi.o ipmimv.o
ipmild.o ipmignu.o
ipmignu.o(.text+0xe4): In function `sig_abort':
/root/ipmiutil-1.6.8/util/ipmignu.c:154: undefined reference to
`ipmi_lan_close_session'
ipmignu.o(.text+0x16a): In function `ipmi_open_gnu':
/root/ipmiutil-1.6.8/util/ipmignu.c:314: undefined reference to
`ipmi_kcs_io_init'
ipmignu.o(.text+0x2ee):/root/ipmiutil-1.6.8/util/ipmignu.c:363:
undefined reference to `ipmi_lan_sendto'
ipmignu.o(.text+0x347):/root/ipmiutil-1.6.8/util/ipmignu.c:372:
undefined reference to `ipmi_lan_recvfrom'
ipmignu.o(.text+0x3f1):/root/ipmiutil-1.6.8/util/ipmignu.c:389:
undefined reference to `ipmi_lan_open_session'
ipmignu.o(.text+0x58e): In function `ipmi_close_gnu':
/root/ipmiutil-1.6.8/util/ipmignu.c:414: undefined reference to
`ipmi_lan_close_session'
ipmignu.o(.text+0x755): In function `ipmicmd_gnu':
/root/ipmiutil-1.6.8/util/ipmignu.c:477: undefined reference to
`fiid_obj_alloc'
ipmignu.o(.text+0x775):/root/ipmiutil-1.6.8/util/ipmignu.c:482:
undefined reference to `fiid_obj_alloc'
ipmignu.o(.text+0x89b):/root/ipmiutil-1.6.8/util/ipmignu.c:522:
undefined reference to `fiid_obj_free'
ipmignu.o(.text+0x8a7):/root/ipmiutil-1.6.8/util/ipmignu.c:523:
undefined reference to `fiid_obj_free'
ipmignu.o(.text+0x9fa):/root/ipmiutil-1.6.8/util/ipmignu.c:270:
undefined reference to `ipmi_lan_cmd'
ipmignu.o(.text+0xb82):/root/ipmiutil-1.6.8/util/ipmignu.c:212:
undefined reference to `ipmi_kcs_cmd_interruptible'
collect2: ld returned 1 exit status
make: *** [showsel] Error 1
I looked at the FAQ on www.uclibc.org, and found the part where a
similar errors are discussed. I checked the Makefile, and can not see
any -I options that should create the problem. The Makefile is included
below:
If anyone can see why this fails, and maby eaven a possible solution?
--
Harald Jensås
/ipmiutils/util/Makefile:
# Generated automatically from Makefile.in by configure.
# Makefile.in generated automatically by automake 1.4 from Makefile.am
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.
SHELL = /bin/sh
srcdir = .
top_srcdir = ..
prefix = /usr
exec_prefix = ${prefix}
bindir = ${exec_prefix}/bin
sbindir = ${exec_prefix}/sbin
libexecdir = ${exec_prefix}/libexec
datadir = ${prefix}/share
sysconfdir = ${prefix}/etc
sharedstatedir = ${prefix}/com
localstatedir = ${prefix}/var
libdir = ${exec_prefix}/lib
infodir = ${prefix}/info
mandir = ${prefix}/man
includedir = ${prefix}/include
oldincludedir = /usr/include
DESTDIR =
pkgdatadir = $(datadir)/ipmiutil
pkglibdir = $(libdir)/ipmiutil
pkgincludedir = $(includedir)/ipmiutil
top_builddir = ..
ACLOCAL = /root/ipmiutil-1.6.8/missing aclocal
AUTOCONF = autoconf
AUTOMAKE = /root/ipmiutil-1.6.8/missing automake
AUTOHEADER = /root/ipmiutil-1.6.8/missing autoheader
INSTALL = /usr/bin/install -c
INSTALL_PROGRAM = ${INSTALL} $(AM_INSTALL_PROGRAM_FLAGS)
INSTALL_DATA = ${INSTALL} -m 644
INSTALL_SCRIPT = ${INSTALL_PROGRAM}
transform = s,x,x,
NORMAL_INSTALL = :
PRE_INSTALL = :
POST_INSTALL = :
NORMAL_UNINSTALL = :
PRE_UNINSTALL = :
POST_UNINSTALL = :
CC = gcc
LN_S = ln -s
MAKEINFO = /root/ipmiutil-1.6.8/missing makeinfo
PACKAGE = ipmiutil
VERSION = 1.6.8
localedir = $(datadir)/locale
INCLUDES = -I..
AM_CPPFLAGS = -DLINUX -DLOCALEDIR=\"$(localedir)\"
LDADD =
# To build with LanDesk support:
# First copy the library to ../freeipmi/libipmiapi.a
# Then uncommment the next two lines.
# AM_CPPFLAGS += -DLINK_LANDESK
# LDADD = -lipmiapi
# CMDMOD = ipmicmd.c imbapi.c ipmimv.c ipmild.c ipmignu.c
# LDFLAGS = -lfreeipmi -L../freeipmi
# To build without gnu freeipmi, uncomment the following two lines.
CMDMOD = ipmicmd.c imbapi.c ipmimv.c ipmild.c ipmignustub.c
LDFLAGS +=
sbin_PROGRAMS = showsel alarms ruconfig hwreset sensor pefconfig
tmconfig wdt icmd getevent xmlconfig
# To build an imb api library (libimbapi.a):
# gcc -DHAVE_CONFIG_H -I. -I.. -DLINUX -g -O2 -c imbapi.c
# ar cru libimbapi.a imbapi.o
# ranlib libimbapi.a
alarms_SOURCES = alarms.c $(CMDMOD)
fruconfig_SOURCES = fruconfig.c $(CMDMOD)
hwreset_SOURCES = hwreset.c $(CMDMOD)
sensor_SOURCES = sensor.c $(CMDMOD)
showsel_SOURCES = showsel.c events.c $(CMDMOD)
pefconfig_SOURCES = pefconfig.c $(CMDMOD)
tmconfig_SOURCES = tmconfig.c $(CMDMOD)
wdt_SOURCES = wdt.c $(CMDMOD)
icmd_SOURCES = icmd.c $(CMDMOD)
xmlconfig_SOURCES = xmlconfig.c $(CMDMOD)
getevent_SOURCES = getevent.c events.c $(CMDMOD)
EXTRA_DIST = imb_api.h ipmicmd.h ipmi_ioctls.h
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
PROGRAMS = $(sbin_PROGRAMS)
DEFS = -DHAVE_CONFIG_H -I. -I$(srcdir) -I..
CPPFLAGS =
LIBS =
alarms_OBJECTS = alarms.o ipmicmd.o imbapi.o ipmimv.o ipmild.o \
ipmignu.o
alarms_LDADD = $(LDADD)
alarms_DEPENDENCIES =
alarms_LDFLAGS =
fruconfig_OBJECTS = fruconfig.o ipmicmd.o imbapi.o ipmimv.o ipmild.o \
ipmignu.o
fruconfig_LDADD = $(LDADD)
fruconfig_DEPENDENCIES =
fruconfig_LDFLAGS =
hwreset_OBJECTS = hwreset.o ipmicmd.o imbapi.o ipmimv.o ipmild.o \
ipmignu.o
hwreset_LDADD = $(LDADD)
hwreset_DEPENDENCIES =
hwreset_LDFLAGS =
sensor_OBJECTS = sensor.o ipmicmd.o imbapi.o ipmimv.o ipmild.o \
ipmignu.o
sensor_LDADD = $(LDADD)
sensor_DEPENDENCIES =
sensor_LDFLAGS =
showsel_OBJECTS = showsel.o events.o ipmicmd.o imbapi.o ipmimv.o \
ipmild.o ipmignu.o
showsel_LDADD = $(LDADD)
showsel_DEPENDENCIES =
showsel_LDFLAGS =
pefconfig_OBJECTS = pefconfig.o ipmicmd.o imbapi.o ipmimv.o ipmild.o \
ipmignu.o
pefconfig_LDADD = $(LDADD)
pefconfig_DEPENDENCIES =
pefconfig_LDFLAGS =
tmconfig_OBJECTS = tmconfig.o ipmicmd.o imbapi.o ipmimv.o ipmild.o \
ipmignu.o
tmconfig_LDADD = $(LDADD)
tmconfig_DEPENDENCIES =
tmconfig_LDFLAGS =
wdt_OBJECTS = wdt.o ipmicmd.o imbapi.o ipmimv.o ipmild.o ipmignu.o
wdt_LDADD = $(LDADD)
wdt_DEPENDENCIES =
wdt_LDFLAGS =
icmd_OBJECTS = icmd.o ipmicmd.o imbapi.o ipmimv.o ipmild.o ipmignu.o
icmd_LDADD = $(LDADD)
icmd_DEPENDENCIES =
icmd_LDFLAGS =
getevent_OBJECTS = getevent.o events.o ipmicmd.o imbapi.o ipmimv.o \
ipmild.o ipmignu.o
getevent_LDADD = $(LDADD)
getevent_DEPENDENCIES =
getevent_LDFLAGS =
xmlconfig_OBJECTS = xmlconfig.o ipmicmd.o imbapi.o ipmimv.o ipmild.o \
ipmignu.o
xmlconfig_LDADD = $(LDADD)
xmlconfig_DEPENDENCIES =
xmlconfig_LDFLAGS =
CFLAGS = -g -O2
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS)
$(AM_CFLAGS) $(CFLAGS)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
DIST_COMMON = Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = gtar
GZIP_ENV = --best
DEP_FILES = .deps/alarms.P .deps/events.P .deps/fruconfig.P \
.deps/getevent.P .deps/hwreset.P .deps/icmd.P .deps/imbapi.P \
.deps/ipmicmd.P .deps/ipmignu.P .deps/ipmild.P .deps/ipmimv.P \
.deps/pefconfig.P .deps/sensor.P .deps/showsel.P .deps/tmconfig.P \
.deps/wdt.P .deps/xmlconfig.P
SOURCES = $(alarms_SOURCES) $(fruconfig_SOURCES) $(hwreset_SOURCES)
$(sensor_SOURCES) $(showsel_SOURCES) $(pefconfig_SOURCES)
$(tmconfig_SOURCES) $(wdt_SOURCES) $(icmd_SOURCES) $(getevent_SOURCES)
$(xmlconfig_SOURCES)
OBJECTS = $(alarms_OBJECTS) $(fruconfig_OBJECTS) $(hwreset_OBJECTS)
$(sensor_OBJECTS) $(showsel_OBJECTS) $(pefconfig_OBJECTS)
$(tmconfig_OBJECTS) $(wdt_OBJECTS) $(icmd_OBJECTS) $(getevent_OBJECTS)
$(xmlconfig_OBJECTS)
all: all-redirect
.SUFFIXES:
.SUFFIXES: .S .c .o .s
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnu util/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
$(BUILT_SOURCES)
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
mostlyclean-sbinPROGRAMS:
clean-sbinPROGRAMS:
-test -z "$(sbin_PROGRAMS)" || rm -f $(sbin_PROGRAMS)
distclean-sbinPROGRAMS:
maintainer-clean-sbinPROGRAMS:
install-sbinPROGRAMS: $(sbin_PROGRAMS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(DESTDIR)$(sbindir)
@list='$(sbin_PROGRAMS)'; for p in $$list; do \
if test -f $$p; then \
echo " $(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo
$$p|sed 's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`"; \
$(INSTALL_PROGRAM) $$p $(DESTDIR)$(sbindir)/`echo $$p|sed
's/$(EXEEXT)$$//'|sed '$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
else :; fi; \
done
uninstall-sbinPROGRAMS:
@$(NORMAL_UNINSTALL)
list='$(sbin_PROGRAMS)'; for p in $$list; do \
rm -f $(DESTDIR)$(sbindir)/`echo $$p|sed 's/$(EXEEXT)$$//'|sed
'$(transform)'|sed 's/$$/$(EXEEXT)/'`; \
done
.s.o:
$(COMPILE) -c $<
.S.o:
$(COMPILE) -c $<
mostlyclean-compile:
-rm -f *.o core *.core
clean-compile:
distclean-compile:
-rm -f *.tab.c
maintainer-clean-compile:
alarms: $(alarms_OBJECTS) $(alarms_DEPENDENCIES)
@rm -f alarms
$(LINK) $(alarms_LDFLAGS) $(alarms_OBJECTS) $(alarms_LDADD) $(LIBS)
fruconfig: $(fruconfig_OBJECTS) $(fruconfig_DEPENDENCIES)
@rm -f fruconfig
$(LINK) $(fruconfig_LDFLAGS) $(fruconfig_OBJECTS) $(fruconfig_LDADD)
$(LIBS)
hwreset: $(hwreset_OBJECTS) $(hwreset_DEPENDENCIES)
@rm -f hwreset
$(LINK) $(hwreset_LDFLAGS) $(hwreset_OBJECTS) $(hwreset_LDADD) $(LIBS)
sensor: $(sensor_OBJECTS) $(sensor_DEPENDENCIES)
@rm -f sensor
$(LINK) $(sensor_LDFLAGS) $(sensor_OBJECTS) $(sensor_LDADD) $(LIBS)
showsel: $(showsel_OBJECTS) $(showsel_DEPENDENCIES)
@rm -f showsel
$(LINK) $(showsel_LDFLAGS) $(showsel_OBJECTS) $(showsel_LDADD) $(LIBS)
pefconfig: $(pefconfig_OBJECTS) $(pefconfig_DEPENDENCIES)
@rm -f pefconfig
$(LINK) $(pefconfig_LDFLAGS) $(pefconfig_OBJECTS) $(pefconfig_LDADD)
$(LIBS)
tmconfig: $(tmconfig_OBJECTS) $(tmconfig_DEPENDENCIES)
@rm -f tmconfig
$(LINK) $(tmconfig_LDFLAGS) $(tmconfig_OBJECTS) $(tmconfig_LDADD)
$(LIBS)
wdt: $(wdt_OBJECTS) $(wdt_DEPENDENCIES)
@rm -f wdt
$(LINK) $(wdt_LDFLAGS) $(wdt_OBJECTS) $(wdt_LDADD) $(LIBS)
icmd: $(icmd_OBJECTS) $(icmd_DEPENDENCIES)
@rm -f icmd
$(LINK) $(icmd_LDFLAGS) $(icmd_OBJECTS) $(icmd_LDADD) $(LIBS)
getevent: $(getevent_OBJECTS) $(getevent_DEPENDENCIES)
@rm -f getevent
$(LINK) $(getevent_LDFLAGS) $(getevent_OBJECTS) $(getevent_LDADD)
$(LIBS)
xmlconfig: $(xmlconfig_OBJECTS) $(xmlconfig_DEPENDENCIES)
@rm -f xmlconfig
$(LINK) $(xmlconfig_LDFLAGS) $(xmlconfig_OBJECTS) $(xmlconfig_LDADD)
$(LIBS)
tags: TAGS
ID: $(HEADERS) $(SOURCES) $(LISP)
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
here=`pwd` && cd $(srcdir) \
&& mkid -f$$here/ID $$unique $(LISP)
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
tags=; \
here=`pwd`; \
list='$(SOURCES) $(HEADERS)'; \
unique=`for i in $$list; do echo $$i; done | \
awk ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP)
-o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
-rm -f TAGS ID
maintainer-clean-tags:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = util
distdir: $(DISTFILES)
here=`cd $(top_builddir) && pwd`; \
top_distdir=`cd $(top_distdir) && pwd`; \
distdir=`cd $(distdir) && pwd`; \
cd $(top_srcdir) \
&& $(AUTOMAKE) --include-deps --build-dir=$$here
--srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnu util/Makefile
@for file in $(DISTFILES); do \
d=$(srcdir); \
if test -d $$d/$$file; then \
cp -pr $$d/$$file $(distdir)/$$file; \
else \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file || :; \
fi; \
done
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-include $(DEP_FILES)
mostlyclean-depend:
clean-depend:
distclean-depend:
-rm -rf .deps
maintainer-clean-depend:
%.o: %.c
@echo '$(COMPILE) -c $<'; \
$(COMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
@-cp .deps/$(*F).pp .deps/$(*F).P; \
tr ' ' '\012' < .deps/$(*F).pp \
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
>> .deps/$(*F).P; \
rm .deps/$(*F).pp
%.lo: %.c
@echo '$(LTCOMPILE) -c $<'; \
$(LTCOMPILE) -Wp,-MD,.deps/$(*F).pp -c $<
@-sed -e 's/^\([^:]*\)\.o[ ]*:/\1.lo \1.o :/' \
< .deps/$(*F).pp > .deps/$(*F).P; \
tr ' ' '\012' < .deps/$(*F).pp \
| sed -e 's/^\\$$//' -e '/^$$/ d' -e '/:$$/ d' -e 's/$$/ :/' \
>> .deps/$(*F).P; \
rm -f .deps/$(*F).pp
info-am:
info: info-am
dvi-am:
dvi: dvi-am
check-am: all-am
check: check-am
installcheck-am:
installcheck: installcheck-am
install-exec-am: install-sbinPROGRAMS
install-exec: install-exec-am
install-data-am:
install-data: install-data-am
install-am: all-am
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
install: install-am
uninstall-am: uninstall-sbinPROGRAMS
uninstall: uninstall-am
all-am: Makefile $(PROGRAMS)
all-redirect: all-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
installdirs:
$(mkinstalldirs) $(DESTDIR)$(sbindir)
mostlyclean-generic:
clean-generic:
distclean-generic:
-rm -f Makefile $(CONFIG_CLEAN_FILES)
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
maintainer-clean-generic:
mostlyclean-am: mostlyclean-sbinPROGRAMS mostlyclean-compile \
mostlyclean-tags mostlyclean-depend mostlyclean-generic
mostlyclean: mostlyclean-am
clean-am: clean-sbinPROGRAMS clean-compile clean-tags clean-depend \
clean-generic mostlyclean-am
clean: clean-am
distclean-am: distclean-sbinPROGRAMS distclean-compile distclean-tags \
distclean-depend distclean-generic clean-am
distclean: distclean-am
maintainer-clean-am: maintainer-clean-sbinPROGRAMS \
maintainer-clean-compile maintainer-clean-tags \
maintainer-clean-depend maintainer-clean-generic \
distclean-am
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
maintainer-clean: maintainer-clean-am
.PHONY: mostlyclean-sbinPROGRAMS distclean-sbinPROGRAMS \
clean-sbinPROGRAMS maintainer-clean-sbinPROGRAMS uninstall-sbinPROGRAMS \
install-sbinPROGRAMS mostlyclean-compile distclean-compile \
clean-compile maintainer-clean-compile tags mostlyclean-tags \
distclean-tags clean-tags maintainer-clean-tags distdir \
mostlyclean-depend distclean-depend clean-depend \
maintainer-clean-depend info-am info dvi-am dvi check check-am \
installcheck-am installcheck install-exec-am install-exec \
install-data-am install-data install-am install uninstall-am uninstall \
all-redirect all-am all installdirs mostlyclean-generic \
distclean-generic clean-generic maintainer-clean-generic clean \
mostlyclean distclean maintainer-clean
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:
More information about the uClibc
mailing list