Software > Programmieren, Kompilieren
Problem beim Myricom mx-2g Treiber kompilieren/installieren....
Octane_Suicide:
Hallo Freunde der Sonne,
Hab wieder mal ein wenig Zeit gefunden um mich mit meinen Maschinen zu beschaeftigen und hab natuerlich gleich mal wieder etwas angefasst was nicht funktioniert ::) . Ich hab mir vor laengerer Zeit ein paar Myrinet-Karten bei eBucht geholt und jetzt wollte ich die benoetigten Treiber kompilieren bzw. installieren, aber das "make" nach dem "configure" scheitert an einem "unexpected end of line seen".
Folgende Konfiguration liegt vor:
* Sun Fire V20z (2x2,4GHz, 1GB RAM, 2x146GB HDD)
* LSI7004G2 HBA (4x2Gbit/s, PCI-X)
* Myricom M3F-PCIXD-2 (2Gbit/s, PCI-X)
* Solaris 10 Generic_141415-09 i86pc installiert
* SunStudio 12 Update 1 installiert
* Alle verfuegbaren Patches installiert (Updatemanager)
Vorgehensweise:
* MX-2G Treiber heruntergeladen (http://www.myri.com/scs/download-mx2g.html, Source fuer Solaris)
* mx2g_1.2.9.tar.gz dekomprimiert
* Ordner mittels scp -r nach /var/tmp kopiert
* cd mx-1.2.9
* ./configure
--- Code: ---checking build system type... i386-pc-solaris2.10
checking host system type... i386-pc-solaris2.10
checking target system type... i386-pc-solaris2.10
checking for gcc... no
checking for cc... cc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... no
checking whether cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
cc: Sun C 5.10 SunOS_i386 2009/06/03
usage: cc [ options] files. Use 'cc -flags' for details
checking how to run the C preprocessor... cc -E
checking for ranlib... no
checking for ar... no
checking if thread safety is enabled... yes
checking for OS specific settings...
checking if debugging is enabled... no
checking if logging is enabled... no
checking if Lanai is emulated... no
checking if MX programs will be statically linked... no
checking if optimization is enabled... yes
checking if development code is enabled... no
checking if we need to build the mcp... no
checking if we want to enable rdma window... yes
checking if kernel library is enabled... no
checking if Ethernet mode is enabled... no
checking wordsize... 32
checking for CPU specific settings... x86_64
configure: creating ./config.status
config.status: creating Makefile
config.status: creating common.mk
config.status: creating dependencies.mk
config.status: creating libmyriexpress/userspace/Makefile
config.status: creating libmyriexpresstcp/Makefile
config.status: creating driver/solaris/Makefile
config.status: creating tools/Makefile
config.status: creating tools/Makefile.mapper-tools
config.status: creating tools/fma_start
config.status: creating tools/mapper_start
config.status: creating tools/mxoed_start
config.status: creating tools/mapper/Makefile
config.status: creating tests/Makefile
config.status: creating spmd/Makefile
config.status: creating spmd_apps/Makefile
config.status: creating driver/solaris/mx_local_install
config.status: creating driver/solaris/mx_start_stop
config.status: creating doc/Makefile
config.status: creating doc/doxygen.conf
config.status: creating common/mx_version.h
config.status: creating mx2g.spec
config.status: creating regression/Makefile
config.status: creating regression/internal/Makefile
config.status: creating regression/external/Makefile
config.status: creating common/mx_auto_config.h
config.status: common/mx_auto_config.h is unchanged
=== configuring in fma (/var/tmp/mx-1.2.9/fma)
configure: running /bin/bash ./configure '--prefix=/opt/mx' --cache-file=/dev/null --srcdir=.
checking build system type... i386-pc-solaris2.10
checking host system type... i386-pc-solaris2.10
checking target system type... i386-pc-solaris2.10
checking for gcc... no
checking for cc... cc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... no
checking whether cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
cc: Sun C 5.10 SunOS_i386 2009/06/03
usage: cc [ options] files. Use 'cc -flags' for details
checking for a BSD-compatible install... ./install-sh -c
checking whether make sets $(MAKE)... no
checking for ranlib... no
checking how to run the C preprocessor... cc -E
checking for ar... no
checking whether ERESTART is declared... no
configure: creating ./config.status
config.status: creating fms.spec
config.status: creating Makefile
config.status: creating common.mk
config.status: creating dependencies.mk
config.status: creating libdb/Makefile
config.status: creating libfma/Makefile
config.status: creating libmyri/gm/make.myri
config.status: creating libmyri/gm/Makefile
config.status: creating libmyri/lxgdb/make.myri
config.status: creating libmyri/lxgdb/Makefile
config.status: creating libmyri/bogus/Makefile
config.status: creating libmyri/bogus/make.myri
config.status: creating fms/Makefile
config.status: creating tools/legacy/fm_init_db/Makefile
config.status: creating tools/legacy/Makefile
config.status: creating libmyri/mx/make.myri
config.status: creating libmyri/mx/Makefile
config.status: creating libmyri/sim/Makefile
config.status: creating libmyri/sim/make.myri
config.status: creating cgi/Makefile
config.status: creating fma/Makefile
config.status: creating tools/Makefile
config.status: creating libfma/config.h
config.status: creating scripts/make_src_tar
config.status: creating tools/fm_help_pkg
--- Ende Code ---
Soweit so gut, ich seh hier keinen Fehler...
* /usr/ccs/bin/make
--- Code: ---make: Fatal error in reader: Makefile, line 16: Unexpected end of line seen
--- Ende Code ---
Und hier ist dann Ende im Gelaende....hmm..... :-[
Hier noch das Makefile (Makefile, es gibt auch noch ein Makefile.in):
--- Code: ---SHELL = /bin/sh
bindir = ${exec_prefix}/bin
exec_prefix = ${prefix}
includedir = ${prefix}/include
libdir = ${exec_prefix}/lib
top_srcdir = .
prefix = /opt/mx
sbindir = ${exec_prefix}/sbin
srcdir = .
sysconfdir = ${prefix}/etc
FMS_SERVER=
MX_TOP_SRCDIR:=$(shell cd $(top_srcdir) && pwd)
#M_MAKE_BSD#MX_TOP_SRCDIR!=cd $(top_srcdir) && pwd
LIB32_NAME=lib
LIB64_NAME=lib/amd64
# Customized library locations
libparent = $(shell echo $(libdir) | sed -e 's@/[^/]*$$@@')
#M_MAKE_BSD#libparent != echo $(libdir) | sed -e 's@/[^/]*$$@@'
lib32dir = $(libparent)/$(LIB32_NAME)
lib64dir = $(libparent)/$(LIB64_NAME)
.SUFFIXES:
.SUFFIXES: .c .o .lo
include common.mk
all: $(lib32) $(lib64) $(mcp) $(prebuilt_mcp) $(fmsdir) lib32 lib64 prebuilt_mcp fma driver tools mapper-tools mapper tests
.PHONY: prebuild
prebuild:
mkdir -p $(srcdir)/driver/common/std
if test -n "yes" ; then \
cp mcp/mx_mcp_array_2g.c $(srcdir)/driver/common/std/mx_mcp_array_2g_prebuilt.c ; \
fi
if test -n "" ; then \
cp mcp_10g/mx_mcp_array_10g.c $(srcdir)/driver/common/std/mx_mcp_array_10g_prebuilt.c ; \
fi
.PHONY: lib
lib: lib32
.PHONY: lib32
lib32:
true
$(MAKE) -C $(MX_LIB32) "CC=$(CC) $(CFLAGS32)"
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB32_DBG) "CC=$(CC) $(CFLAGS32)" ; \
fi
.PHONY: lib64
lib64:
true
$(MAKE) -C $(MX_LIB64) "CC=$(CC) $(CFLAGS64)"
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB64_DBG) "CC=$(CC) $(CFLAGS64)" ; \
fi
.PHONY: libmyriexpresstcp
libmyriexpresstcp:
true
$(MAKE) -C libmyriexpresstcp
.PHONY: tools
tools: lib$(MX_WORDSIZE)
$(MAKE) -C tools "CC=$(CC) $(CFLAGS32)"
.PHONY: mapper-tools
mapper-tools: lib$(MX_WORDSIZE)
$(MAKE) -C tools "CC=$(CC) $(CFLAGS32)" -f Makefile.mapper-tools
.PHONY: mapper
mapper: lib$(MX_WORDSIZE)
$(MAKE) -C tools/mapper "CC=$(CC) $(CFLAGS32)"
.PHONY: tests
tests: lib$(MX_WORDSIZE)
$(MAKE) -C tests "CC=$(CC) $(CFLAGS32)"
.PHONY: fma
fma: lib$(MX_WORDSIZE)
$(MAKE) -C fma "CC=$(CC) $(CFLAGS32)" MYRI_INC="-I/var/tmp/mx-1.2.9/common -I$(MX_TOP_SRCDIR)/common" MYRI_LIB=/var/tmp/mx-1.2.9/libmyriexpress/user$(MX_WORDSIZE)
.PHONY: spmd
spmd:
$(MAKE) -C spmd "CC=$(CC) $(CFLAGS32)"
.PHONY: spmd_apps
spmd_apps:
$(MAKE) -C spmd_apps "CC=$(CC) $(CFLAGS32)"
.PHONY: mcp
mcp: $(MCP_LIST:%=mcp_%)
.PHONY: mcp_2g
mcp_2g:
cd mcp && $(MAKE)
.PHONY: mcp_10g
mcp_10g:
cd mcp_10g && $(MAKE)
mcp/mx_mcp_array_2g.c: $(srcdir)/driver/common/std/mx_mcp_array_2g_prebuilt.c Makefile
cp $(srcdir)/driver/common/std/mx_mcp_array_2g_prebuilt.c $@
mcp_10g/mx_mcp_array_10g.c: $(srcdir)/driver/common/std/mx_mcp_array_10g_prebuilt.c Makefile
cp $(srcdir)/driver/common/std/mx_mcp_array_10g_prebuilt.c $@
.PHONY: prebuilt_mcp_10g prebuilt_mcp_2g prebuilt_mcp
prebuilt_mcp: $(MCP_LIST:%=prebuilt_mcp_%)
prebuilt_mcp_2g: mcp/mx_mcp_array_2g.c
prebuilt_mcp_10g: mcp_10g/mx_mcp_array_10g.c
.PHONY: driver
driver: prebuilt_mcp
$(MAKE) -C $(driverdir)
.PHONY: doc
doc:
$(MAKE) -C doc
.PHONY: clean lib_clean libtcp_clean mcp_clean driver_clean doc_clean \
tools_clean tests_clean mapper_clean spmd_clean spmd_apps_clean \
fms_clean
clean: lib_clean libtcp_clean mcp_clean driver_clean doc_clean tools_clean \
tests_clean mapper_clean spmd_clean spmd_apps_clean fms_clean
fms_clean:
if test -n "fma" ; then \
$(MAKE) -C fma clean; \
fi
lib_clean:
if test -n "lib32" ; then \
$(MAKE) -C $(MX_LIB32) clean "CC=$(CC) $(CFLAGS32)"; \
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB32_DBG) clean "CC=$(CC) $(CFLAGS32)"; \
fi \
fi
if test -n "lib64" ; then \
$(MAKE) -C $(MX_LIB64) clean "CC=$(CC) $(CFLAGS64)"; \
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB64_DBG) clean "CC=$(CC) $(CFLAGS64)"; \
fi \
fi
libtcp_clean:
$(MAKE) -C libmyriexpresstcp clean
mcp_clean:
if test -n "" -a -n "yes" ; then \
$(MAKE) -C mcp clean; \
fi
if test -n "" -a -n "" ; then \
$(MAKE) -C mcp_10g clean; \
fi
driver_clean:
$(MAKE) -C $(driverdir) clean
rm -f mcp/mx_mcp_array_2g.c mcp/mx_mcp_array.c
if test -n "" ; then \
rm -f $(srcdir)/driver/common/mx_mcp_array_prebuilt.c;\
rm -f $(srcdir)/driver/common/mx_mcp_array.c;\
rm -f $(srcdir)/mcp/mx_mcp_array.c;\
rm -f $(srcdir)/driver/common/mx_mcp_array_prebuilt_2g.c;\
rm -f $(srcdir)/driver/common/mx_mcp_array_2g.c;\
rm -f $(srcdir)/mcp/mx_mcp_array_2g.c;\
rm -f $(srcdir)/driver/common/mx_mcp_array_prebuilt_10g.c;\
rm -f $(srcdir)/driver/common/mx_mcp_array_10g.c;\
rm -f $(srcdir)/mcp/mx_mcp_array_10g.c;\
fi
doc_clean:
$(MAKE) -C doc clean
tools_clean:
$(MAKE) -C tools clean
mapper_clean:
$(MAKE) -C tools/mapper clean
tests_clean:
$(MAKE) -C tests clean
spmd_clean:
$(MAKE) -C spmd clean
spmd_apps_clean:
$(MAKE) -C spmd_apps clean
.PHONY: distclean lib_distclean libtcp_distclean mcp_distclean \
driver_distclean tools_distclean mappertools_distclean \
mapper_distclean tests_distclean \
spmd_distclean spmd_apps_distclean
distclean: lib_distclean libtcp_distclean mcp_distclean driver_distclean \
tools_distclean mappertools_distclean mapper_distclean tests_distclean \
spmd_distclean spmd_apps_distclean
lib_distclean:
if test -n "lib32" ; then \
$(MAKE) -C $(MX_LIB32) distclean "CC=$(CC) $(CFLAGS32)"; \
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB32_DBG) distclean "CC=$(CC) $(CFLAGS32)"; \
fi \
fi
if test -n "lib64" ; then \
$(MAKE) -C $(MX_LIB64) distclean "CC=$(CC) $(CFLAGS64)"; \
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB64_DBG) distclean "CC=$(CC) $(CFLAGS64)"; \
fi \
fi
libtcp_distclean:
$(MAKE) -C libmyriexpresstcp distclean
mcp_distclean:
if test -n "" -a -n "yes" ; then \
$(MAKE) -C mcp distclean; \
fi
if test -n "" -a -n "" ; then \
$(MAKE) -C mcp_10g distclean; \
fi
driver_distclean:
$(MAKE) -C $(driverdir) distclean
tools_distclean:
$(MAKE) -C tools distclean
mappertools_distclean:
$(MAKE) -C tools -f Makefile.mapper-tools distclean
mapper_distclean:
$(MAKE) -C tools/mapper distclean
tests_distclean:
$(MAKE) -C tests distclean
spmd_distclean:
$(MAKE) -C spmd distclean
spmd_apps_distclean:
$(MAKE) -C spmd_apps distclean
.PHONY: depend lib_depend libtcp_depend mcp_depend driver_depend tools_depend tests_depend mapper_depend
depend: lib_depend libtcp_depend mcp_depend driver_depend tools_depend tests_depend mapper_depend
lib_depend:
if test -n "lib32" ; then \
$(MAKE) -C $(MX_LIB32) depend "CC=$(CC) $(CFLAGS32)"; \
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB32_DBG) depend "CC=$(CC) $(CFLAGS32)"; \
fi \
fi
if test -n "lib64" ; then \
$(MAKE) -C $(MX_LIB64) depend "CC=$(CC) $(CFLAGS64)"; \
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB64_DBG) depend "CC=$(CC) $(CFLAGS64)"; \
fi \
fi
libtcp_depend:
$(MAKE) -C libmyriexpresstcp depend
mcp_depend:
if test -n "" -a -n "yes" ; then \
$(MAKE) -C mcp depend; \
fi
if test -n "" -a -n "" ; then \
$(MAKE) -C mcp_10g depend; \
fi
driver_depend:
$(MAKE) -C $(driverdir) depend
tools_depend:
$(MAKE) -C tools depend
mapper_depend:
$(MAKE) -C tools/mapper depend
tests_depend:
$(MAKE) -C tests depend
.PHONY: TAGS lib_TAGS libtcp_TAGS mcp_TAGS driver_TAGS tools_TAGS tests_TAGS
TAGS: lib_TAGS libtcp_TAGS mcp_TAGS driver_TAGS mapper_TAGS tools_TAGS tests_TAGS
lib_TAGS:
if test -n "lib32" ; then \
$(MAKE) -C $(MX_LIB32) TAGS "CC=$(CC) $(CFLAGS32)"; \
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB32_DBG) TAGS "CC=$(CC) $(CFLAGS32)"; \
fi \
fi
if test -n "lib64" ; then \
$(MAKE) -C $(MX_LIB64) TAGS "CC=$(CC) $(CFLAGS64)"; \
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB64_DBG) TAGS "CC=$(CC) $(CFLAGS64)"; \
fi \
fi
libtcp_TAGS:
$(MAKE) -C libmyriexpresstcp TAGS
mcp_TAGS:
if test -n "" -a -n "yes" ; then \
$(MAKE) -C mcp TAGS; \
fi
if test -n "" -a -n "" ; then \
$(MAKE) -C mcp_10g TAGS; \
fi
driver_TAGS:
$(MAKE) -C $(driverdir) TAGS
tools_TAGS:
$(MAKE) -C tools TAGS
mapper_TAGS:
$(MAKE) -C tools/mapper TAGS
tests_TAGS:
$(MAKE) -C tests TAGS
.PHONY: install install-only
install: all install-only
install-only:
@echo "Installing to $(DESTDIR)$(prefix)"
@if test ! -d $(DESTDIR)$(prefix); then \
echo "'$(DESTDIR)$(prefix) didn't exist, creating it" ; \
mkdir -p $(DESTDIR)$(prefix) ; \
fi
@if test ! -d $(DESTDIR)$(includedir); then \
echo "$(DESTDIR)$(includedir) didn't exist, creating it" ; \
mkdir -p $(DESTDIR)$(includedir) ; \
fi
@mkdir -p $(DESTDIR)$(includedir)/mx_internals
@if test ! -d $(DESTDIR)$(sysconfdir); then \
echo "$(DESTDIR)$(sysconfdir) didn't exist, creating it" ; \
mkdir -p $(DESTDIR)$(sysconfdir) ; \
fi
cp $(srcdir)/common/mx_autodetect.h $(DESTDIR)$(includedir)
cp $(srcdir)/common/mx_constants.h $(DESTDIR)$(includedir)
cp $(srcdir)/common/mx_int.h $(DESTDIR)$(includedir)
cp $(srcdir)/common/myriexpress.h $(DESTDIR)$(includedir)
cp $(srcdir)/common/mx_extensions.h $(DESTDIR)$(includedir)
cp $(srcdir)/common/mx_raw.h $(DESTDIR)$(includedir)
cp $(srcdir)/common/mx_io.h $(DESTDIR)$(includedir)
if test "0" -eq 1 ; then \
cp ${srcdir}/common/mx_kernel_api.h $(DESTDIR)$(includedir) ; \
cp ${srcdir}/common/mx_pin.h $(DESTDIR)$(includedir) ; \
fi
cp $(srcdir)/libmyriexpress/mx__fops.h $(DESTDIR)$(includedir)/mx_internals/.
cp $(srcdir)/libmyriexpress/mx__driver_interface.h $(DESTDIR)$(includedir)/mx_internals/.
if test -n "lib32" ; then \
$(MAKE) -C $(MX_LIB32) install libdir=$(lib32dir) "CC=$(CC) $(CFLAGS32)"; \
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB32_DBG) install libdir=$(lib32dir)/debug "CC=$(CC) $(CFLAGS32)"; \
fi \
fi
if test -n "lib64" ; then \
$(MAKE) -C $(MX_LIB64) install libdir=$(lib64dir) "CC=$(CC) $(CFLAGS64)"; \
if test "0" = "0" ; then \
$(MAKE) -C $(MX_LIB64_DBG) install libdir=$(lib64dir)/debug "CC=$(CC) $(CFLAGS64)"; \
fi \
fi
if test -n "fma" ; then \
$(MAKE) -C fma install "CC=$(CC)" MYRI_LIB=/var/tmp/mx-1.2.9/libmyriexpress/user$(MX_WORDSIZE) ; \
fi
@if test ! -L $(DESTDIR)$(libdir) -a ! -d $(DESTDIR)$(libdir); then \
echo "Symlinking lib$(MX_WORDSIZE) as $(libdir)" ; \
ln -s lib$(MX_WORDSIZE) $(DESTDIR)$(libdir) ; \
fi
$(MAKE) -C $(driverdir) install-only
$(MAKE) -C tools/mapper install
$(MAKE) -C tools install
$(MAKE) -C tools -f Makefile.mapper-tools install bindir=$(bindir)/mapper-tools
$(MAKE) -C tests install bindir=$(bindir)/tests
@for s in tools/mx_start_mapper tools/mx_stop_mapper; do \
d=`basename $$s` ; \
sed -e 's|@mx_prefix@|$(prefix)|' \
-e 's|@fms_server@|$(FMS_SERVER)|' $$s \
> $(DESTDIR)$(sbindir)/$$d ; \
chmod +x $(DESTDIR)$(sbindir)/$$d ; \
done
RPM= mx2g-1.2.9-1..rpm
$(RPM) :
$(MAKE) rpm
rpm : all
rm -rf "`pwd`/rpm-buildroot"
$(MAKE) install DESTDIR="`pwd`/rpm-buildroot"
rpmbuild -bb mx2g.spec
deb : $(RPM)
fakeroot alien $(RPM)
.PHONY: zip
zip: all
rm -rf mx
rm -f mx.zip
mkdir -p mx
mkdir -p mx/bin
mkdir -p mx/bin/mapper-tools
mkdir -p mx/bin/tests
mkdir -p mx/etc
mkdir -p mx/include
mkdir -p mx/include/mx_internals
mkdir -p mx/lib
mkdir -p mx/sbin
cp $(driverdir)/mx.inf mx/mx.inf
cp $(driverdir)/mx_mapper.inf mx/mx_mapper.inf
if test -n "" ; then \
cp $(driverdir)/mxoed.inf mx/mxoed.inf ; \
fi
cp ${srcdir}/README mx/bin
$(MAKE) -C tools zip
$(MAKE) -C tools -f Makefile.mapper-tools zip
cp tests/*.exe mx/bin/tests
cp ${srcdir}/common/mx_autodetect.h mx/include
cp ${srcdir}/common/mx_constants.h mx/include
cp ${srcdir}/common/mx_int.h mx/include
cp ${srcdir}/common/mx_io.h mx/include
cp ${srcdir}/common/mx_raw.h mx/include
cp ${srcdir}/common/myriexpress.h mx/include
cp ${srcdir}/common/mx_extensions.h mx/include
if test "0" -eq 1 ; then \
cp ${srcdir}/common/mx_kernel_api.h mx/include ; \
cp ${srcdir}/common/mx_pin.h mx/include ; \
fi
cp ${srcdir}/libmyriexpress/mx__driver_interface.h mx/include/mx_internals
cp ${srcdir}/libmyriexpress/mx__fops.h mx/include/mx_internals
cp libmyriexpress/user32/myriexpress.dll mx/lib
cp libmyriexpress/user32/myriexpress.lib mx/lib
cp $(driverdir)/mx.sys mx/sbin
cp tools/mapper/mx_mapper.exe mx/sbin
zip -r mx mx
reconf :
${srcdir}/prep
./config.status --recheck
./config.status
if test -n "fma" ; then \
cd fma && ./config.status --recheck && ./config.status ; \
fi
--- Ende Code ---
Hoffe jemand weiss was!
Hab keine Ahnung worans liegt...
Danke gleich schon mal..
MfG Michael
Tschokko:
Versuchs mal mit gmake (GNU make).
Gruß
Tschokko
Octane_Suicide:
Hallo Tschokko,
Bin grad am Probieren, passen natuerlich wieder alle Pfade nicht :( .
Findet z.b. "ar" nicht, muss ich noch einiges hinbiegen.
Aber danke fuer den Tip, gmake regt sich zumindest nicht mehr ueber das makefile auf.
[OT]
Hab deinen Blog grad bewundert, find ich Klasse!
Hab da grad gesehen das du bei deinen M5214 auch Controller dabei hast.
Was machen die? Braucht man die, oder kann man die M5214 auch direkt an einen HBA oder ueber einen FC-Switch an den HBA haengen?
[/OT]
Gruesse Michael
Octane_Suicide:
So nachdem ich die Pfade passend gesetzt habe, nimmt er jetzt den gcc und ich gmake.
./configure sieht so aus:
--- Code: ---checking build system type... i386-pc-solaris2.10
checking host system type... i386-pc-solaris2.10
checking target system type... i386-pc-solaris2.10
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for ranlib... ranlib
checking for ar... ar
checking if thread safety is enabled... yes
checking for OS specific settings...
checking if debugging is enabled... no
checking if logging is enabled... no
checking if Lanai is emulated... no
checking if MX programs will be statically linked... no
checking if optimization is enabled... yes
checking if development code is enabled... no
checking if we need to build the mcp... no
checking if we want to enable rdma window... yes
checking if kernel library is enabled... no
checking if Ethernet mode is enabled... no
checking wordsize... 32
checking for CPU specific settings... x86_64
configure: creating ./config.status
config.status: creating Makefile
config.status: creating common.mk
config.status: creating dependencies.mk
config.status: creating libmyriexpress/userspace/Makefile
config.status: creating libmyriexpresstcp/Makefile
config.status: creating driver/solaris/Makefile
config.status: creating tools/Makefile
config.status: creating tools/Makefile.mapper-tools
config.status: creating tools/fma_start
config.status: creating tools/mapper_start
config.status: creating tools/mxoed_start
config.status: creating tools/mapper/Makefile
config.status: creating tests/Makefile
config.status: creating spmd/Makefile
config.status: creating spmd_apps/Makefile
config.status: creating driver/solaris/mx_local_install
config.status: creating driver/solaris/mx_start_stop
config.status: creating doc/Makefile
config.status: creating doc/doxygen.conf
config.status: creating common/mx_version.h
config.status: creating mx2g.spec
config.status: creating regression/Makefile
config.status: creating regression/internal/Makefile
config.status: creating regression/external/Makefile
config.status: creating common/mx_auto_config.h
config.status: common/mx_auto_config.h is unchanged
=== configuring in fma (/var/tmp/mx-1.2.9/fma)
configure: running /bin/bash ./configure '--prefix=/opt/mx' --cache-file=/dev/null --srcdir=.
checking build system type... i386-pc-solaris2.10
checking host system type... i386-pc-solaris2.10
checking target system type... i386-pc-solaris2.10
checking for gcc... gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for a BSD-compatible install... ./install-sh -c
checking whether make sets $(MAKE)... yes
checking for ranlib... ranlib
checking how to run the C preprocessor... gcc -E
checking for ar... ar
checking whether ERESTART is declared... yes
configure: creating ./config.status
config.status: creating fms.spec
config.status: creating Makefile
config.status: creating common.mk
config.status: creating dependencies.mk
config.status: creating libdb/Makefile
config.status: creating libfma/Makefile
config.status: creating libmyri/gm/make.myri
config.status: creating libmyri/gm/Makefile
config.status: creating libmyri/lxgdb/make.myri
config.status: creating libmyri/lxgdb/Makefile
config.status: creating libmyri/bogus/Makefile
config.status: creating libmyri/bogus/make.myri
config.status: creating fms/Makefile
config.status: creating tools/legacy/fm_init_db/Makefile
config.status: creating tools/legacy/Makefile
config.status: creating libmyri/mx/make.myri
config.status: creating libmyri/mx/Makefile
config.status: creating libmyri/sim/Makefile
config.status: creating libmyri/sim/make.myri
config.status: creating cgi/Makefile
config.status: creating fma/Makefile
config.status: creating tools/Makefile
config.status: creating libfma/config.h
config.status: creating scripts/make_src_tar
config.status: creating tools/fm_help_pkg
--- Ende Code ---
Dann laeuft auch das gmake viel weiter und compiliert auch, aber irgendwie regt sich der linker auf:
--- Code: ---...
...
gcc -m32 -o fma fma.o fma_dfs_route.o fma_error.o fma_fabric.o fma_fms.o fma_log.o fma_map.o fma_map_fabric.o fma_mom_moe.o fma_myri.o fma_myrioe.o fma_nic_cache.o fma_preset_routes.o fma_probe.o fma_proxy.o fma_raw_proxy.o fma_route.o fma_settings.o fma_standalone.o fma_sync_timer.o fma_tunnel.o fma_verify.o fma_resolve.o \
-DWHICHFMA=fma \
-lpthread ../libmyri/mx/libmyrimx.a ../libfma/libfma.a ../libdb/libdb.a /var/tmp/mx-1.2.9/libmyriexpress/user32/libmyriexpress.a \
-lsocket -lnsl -lrt
Undefined first referenced
symbol in file
mx__writebar /var/tmp/mx-1.2.9/libmyriexpress/user32/libmyriexpress.a(mx__shmem.o)
mx__stbar /var/tmp/mx-1.2.9/libmyriexpress/user32/libmyriexpress.a(mx__lib.o)
mx__readbar /var/tmp/mx-1.2.9/libmyriexpress/user32/libmyriexpress.a(mx__lib.o)
ld: fatal: Symbol referencing errors. No output written to fma
collect2: ld returned 1 exit status
gmake[2]: *** [fma] Error 1
gmake[2]: Leaving directory `/var/tmp/mx-1.2.9/fma/fma'
gmake[1]: *** [subdirs-all] Error 2
gmake[1]: Leaving directory `/var/tmp/mx-1.2.9/fma'
gmake: *** [fma] Error 2
--- Ende Code ---
Naja, wieder mal mit dem Latein am Ende. (7 millionste kompilation die nicht einfach geht... :-\ )
Regards
Michael
Ten Little Indyans:
--- Zitat von: Octane_Suicide am 23. August 2009, 13:49:02 ---
--- Code: ---Undefined first referenced
symbol in file
mx__writebar /var/tmp/mx-1.2.9/libmyriexpress/user32/libmyriexpress.a(mx__shmem.o)
mx__stbar /var/tmp/mx-1.2.9/libmyriexpress/user32/libmyriexpress.a(mx__lib.o)
mx__readbar /var/tmp/mx-1.2.9/libmyriexpress/user32/libmyriexpress.a(mx__lib.o)
--- Ende Code ---
--- Ende Zitat ---
In libmyriexpress.a wird auf die Symbole (Funktionen oder Variablen) mx__writebar, mx__stbar und mx__readbar zugegriffen, der Linker kann diese aber nirgendwo finden.
Die erste Frage wäre also "wo befindet sich mx__writebar überhaupt?" Hat man die mögliche Quelle lokalisiert geht es darum festzustellen warum der Linker das entsprechende Modul nicht gefunden hat. (Wurde die Datei überhaupt übersetzt? Ist sie Teil einer Bibliothek libXYZ.a? Wird die Datei bzw. Bibliothek auch in der Linker-Kommandozeile genannt?)
--- Zitat von: Octane_Suicide ---
--- Code: ---...
...
gcc -m32 -o fma fma.o fma_dfs_route.o fma_error.o fma_fabric.o fma_fms.o fma_log.o fma_map.o fma_map_fabric.o fma_mom_moe.o fma_myri.o fma_myrioe.o fma_nic_cache.o fma_preset_routes.o fma_probe.o fma_proxy.o fma_raw_proxy.o fma_route.o fma_settings.o fma_standalone.o fma_sync_timer.o fma_tunnel.o fma_verify.o fma_resolve.o \
-DWHICHFMA=fma \
-lpthread ../libmyri/mx/libmyrimx.a ../libfma/libfma.a ../libdb/libdb.a /var/tmp/mx-1.2.9/libmyriexpress/user32/libmyriexpress.a \
-lsocket -lnsl -lrt
--- Ende Code ---
--- Ende Zitat ---
Von den Namen her könnte ich mir vorstellen das die gesuchten Symbole sich in libmyrimx.a verstecken. Da tut sich beim GNU Linker folgende fiese Falle auf:
--- Zitat von: ld(1) --- The linker will search an archive only once, at the location where
it is specified on the command line. If the archive defines a
symbol which was undefined in some object which appeared before the
archive on the command line, the linker will include the
appropriate file(s) from the archive. However, an undefined symbol
in an object appearing later on the command line will not cause the
linker to search the archive again.
--- Ende Zitat ---
libmyriexpress.a taucht erst nach libmyrimx.a auf. Als der Linker libmyrimx.a verarbeitet hat wusste er noch gar nicht das diese Symbole gebraucht werden.
Falls mx__writebar tatsächlich in libmyrimx.a vorhanden ist kannst Du mal versuchen es so hinzubiegen das libmyrimx.a nach libmyriexpress.a auf der Kommandozeile erwähnt wird. (Mehrfachnennungen sind kein Problem, manchmal sogar nötig um alle Abhängigkeiten aufzulösen)
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln