[vz-users] Frage zum ./configure von vzlogger
Harald Koenig
koenig at tat.physik.uni-tuebingen.de
Thu Dec 1 19:44:01 CET 2011
On Dec 01, Raik Busse wrote:
fuer den eiligen leser: nimm das Makefile fuer libsml im anhang;-)
> Hallo Steffen,
>
> danke für die schnelle Antwort, aber wirklich installieren lässt
> sich libsml nicht (make install: ...no Target...) - mit make
also zumind. dieses makefile ist so ziemlich schrott -- das sollte man *sehr* viel
komfortabler und automatischer machen (z.b. mit den auto*-tools auto{gen,make,conf,...}).
irgendwie ein extrem trauriger zustand, so was laesst man so eigentlich nicht im netz frei rumlaufen:-(
> compilieren, fertige lib nach /usr/local/lib kopieren, danach
> ldconfig, dann ist die lib systemweit bekannt, ohne sie nochmal über
> die sml.pc Datei bekannt zu machen.
> Bin aber trotzdem deinem Rat gefolgt, habe die sml.pc nach
> /usr/lib/pkgconfig kopiert und angepasst, die header files nach
> /usr/include/sml kopiert, Fehler bleibt aber! Liegt vllcht daran,
allgemein: entweder alles nach /usr/... kopieren, oder alles nach /usr/local/...
fuer beides mag es gute gruende, mischen sollte man auf gar keinen fall!
IMHO ist /usr/ fuer die distro, da mach ich nach moeglichkeit keine eigenen sachen rein.
bei suse ist recht gut unterstuetzt, dass so ziemlich alles auch in /usr/local/... sucht
(z.b. auch pkg-config nach den *.pc files). das mag nicht jeder, ist aber praktisch.
da die suse-distro nichts selbst nach /usr/local/ kopiert kann man eigenes und fremdes
so schoen getrennt halten -- finde ich gut!
dann: in sml.pc stehen (zerstueckelt!) absolute pfade drin (der "prefix=/usr")
und nur dort wird spaeter nach der libsml gesucht. also besser sml.pc aendern
oder doch nach /usr/ kopieren.
dann2: falls du ein 64bit system hast, dann gehoeren bei suse/redhat die 64bit libs
nicht nach /usr/lib/ bzw. /usr/local/lib/ (dort liegen nur die 32bit libs!!)
sondern nach /usr/lib64/ bzw. /usr/local/lib64/.
daher1: sml.pc aendern (prefix auf /usr/local, /lib/* evtl. durch lib64/ ersetzen)
und alles nach /usr/local/kopieren...
daher2: ich haenge ein "Makefile" fuer die libsml an, in der
sudo make install
"das richtige" macht -- jedenfalls fuer mein 64bit opensuse 12.1 mit installation
nach /usr/local/ (32/64bit erkennung steckt im LIBDIRNAME -- das wird alles
ins sml.pc reingefummelt).
ist extrem haesslich (passt also zum libsml-projekt;-) aber tut!
> dass die Paketverwaltung bei openSuSE anders funktioniert.
nope, mit paketverwaltung hat das nix zu tun.
nun zum vzlogger: leider baut der bei mir dann auch noch nicht ganz durch,
ich bekomme diesen einen fehler bei main.c:
In file included from main.h:33:0,
from main.c:36:
protocol.h:18:3: error: redefinition of typedef 'mode_t' with different type
/usr/include/sys/types.h:71:18: note: previous declaration of 'mode_t' was here
make[2]: *** [main.o] Error 1
den man fuers erste mal auf der command line wie folgt umgehen kann:
make "CFLAGS = -g -O2 -D__mode_t_defined"
und nun die dumme frage zum schluss: wofuer braucht es denn nun die libsml ????
im gesamten build-log kann ich kein einziges "sml" finden ?!?!?!?
bin verwirrt ;-)))
grep -ir sml /home/harald/vz/volkszaehler.org/misc/controller/vzlogger/
liefert *NICHTS*.
naja, vielleicht hilft das makefile ja trotzdem, passt jedenfalls zu meinem
git clone https://github.com/dailab/libsml.git
von gerade eben.
und tschuess,
Harald
--
"I hope to die ___ _____
before I *have* to use Microsoft Word.", 0--,| /OOOOOOO\
Donald E. Knuth, 02-Oct-2001 in Tuebingen. <_/ / /OOOOOOOOOOO\
\ \/OOOOOOOOOOOOOOO\
\ OOOOOOOOOOOOOOOOO|//
\/\/\/\/\/\/\/\/\/
Harald Koenig // / \\ \
koenig at tat.physik.uni-tuebingen.de ^^^^^ ^^^^^
-------------- next part --------------
PREFIX = /usr/local
LIBDIRNAME := $(shell [ -d /usr/lib64/. ] && echo lib64 || echo lib )
all:
@$(MAKE) -C sml
@$(MAKE) -C examples
@$(MAKE) -C test
.PHONY: clean
clean :
@$(MAKE) -C sml clean
@$(MAKE) -C examples clean
@$(MAKE) -C test clean
install:
sed -i~ -e "s|^prefix=.*|prefix=$(PREFIX)|" -e "/libdir=/s|/lib.*|/$(LIBDIRNAME)|" sml.pc
mkdir -p $(PREFIX)/include
cp -r sml/include/* $(PREFIX)/include/
mkdir -p $(PREFIX)/lib/pkgconfig
cp sml.pc $(PREFIX)/lib/pkgconfig
mkdir -p $(PREFIX)/$(LIBDIRNAME)
cp sml/lib/lib*.{a,so*} $(PREFIX)/$(LIBDIRNAME)/
ln -s -f libsml.so.1 $(PREFIX)/$(LIBDIRNAME)/libsml.so # :-(((
/sbin/ldconfig
More information about the volkszaehler-users
mailing list