[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