kann commoncpp2 unter sarge nicht compilieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
cyberthom
Beiträge: 34
Registriert: 25.03.2004 12:26:18
Wohnort: Berlin

kann commoncpp2 unter sarge nicht compilieren

Beitrag von cyberthom » 24.11.2005 14:21:49

Hallo,
ich möchte mmsv2 unter sarge compilieren. Dieses braucht aber libccext2.pc von commoncpp2.
Nun habe ich die neue Version (habe auch die CVS probiert) von commoncpp versucht zu compilieren...
benutze ich nur ./configure bekomme ich diese Fehlermeldung:

Code: Alles auswählen

checking for thread.h... no
checking whether gcc accepts -kthread... no
checking whether gcc accepts -pthread... yes
checking for pthread_self in -lpthread... no
checking for pthread_self in -lc_r... no
checking for pthread_kill in -lpthread... no
checking for pthread_self in -lpthreads... no
checking for pthread_self in -lthread... no
checking for pthread_self in -lgthreads... no
checking for pthread_self in -lcma... no
checking for pthread_self in -lc... no
configure: error: no library for posix threads found!
Die Datei thread.h befindet sich in /usr/include/cc++2/cc++/thread.h doch scheinbar wird sie nicht gefunden...
Nun habe ich dies aufgerufen: ./configure --with-pthread=/lib/libpthread.so.0
Da läuft das Script durch, jedoch bekomme ich beim make diese Fehler:

Code: Alles auswählen

vdr:/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2# make
Making all in include
make[1]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2/include'
make  all-recursive
make[2]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2/include'
Making all in cc++
make[3]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2/include/cc++'
make[3]: Für das Ziel »all« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2/include/cc++'
make[3]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2/include'
make[3]: Für das Ziel »all-am« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2/include'
make[2]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2/include'
make[1]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2/include'
Making all in src
make[1]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2/src'
/bin/sh ../libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I../include    -I../src -DCCXX_EXPORT_LIBRARY          -D_GNU_SOURCE -I/usr/include/libxml2 -I../include  -g -O2 -c thread.cpp
 g++ -DHAVE_CONFIG_H -I. -I. -I../include -I../src -DCCXX_EXPORT_LIBRARY -D_GNU_SOURCE -I/usr/include/libxml2 -I../include -g -O2 -c thread.cpp  -fPIC -DPIC -o .libs/thread.o
In file included from /usr/include/sys/un.h:38,
                 from ../include/cc++/config.h:786,
                 from thread.cpp:38:
/usr/include/string.h:248: error: parse error before `char'
make[1]: *** [thread.lo] Fehler 1
make[1]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2/src'
make: *** [all-recursive] Fehler 1
Sarge/ KDE 3.3

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: kann commoncpp2 unter sarge nicht compilieren

Beitrag von gms » 24.11.2005 19:23:21

cyberthom hat geschrieben: benutze ich nur ./configure bekomme ich diese Fehlermeldung:

Code: Alles auswählen

checking for thread.h... no
checking whether gcc accepts -kthread... no
checking whether gcc accepts -pthread... yes
configure: error: no library for posix threads found!
Die Datei thread.h befindet sich in /usr/include/cc++2/cc++/thread.h doch scheinbar wird sie nicht gefunden...
Nun habe ich dies aufgerufen: ./configure --with-pthread=/lib/libpthread.so.0
eigentlich sollte die /usr/lib/libpthread.so gefunden werden, existiert die auf deinem System nicht ?

Für den anderen Fehler bräuchte ich die verwendeten Versionen von libc6-dev, g++ und commoncpp.

Gruß
gms

cyberthom
Beiträge: 34
Registriert: 25.03.2004 12:26:18
Wohnort: Berlin

Re: kann commoncpp2 unter sarge nicht compilieren

Beitrag von cyberthom » 24.11.2005 22:33:25

gms hat geschrieben: eigentlich sollte die /usr/lib/libpthread.so gefunden werden, existiert die auf deinem System nicht ?
Die Datei befindet sich in /usr/lib/ als auch in /lib/ daher hatte ich die oben schon manuell mit
--with-pthread=/lib/libpthread.so.0 eingebunden
Habe nun noch einmal mit ./configure --with-pthread=/usr/lib/libpthread.so probiert. Bekomme immer noch Fehler:

Code: Alles auswählen

vdr:/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2# make
Making all in include
make[1]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2/include'
make  all-recursive
make[2]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2/include'
Making all in cc++
make[3]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2/include/cc++'
make[3]: Für das Ziel »all« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2/include/cc++'
make[3]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2/include'
make[3]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2/include'
make[2]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2/include'
make[1]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2/include'
Making all in src
make[1]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2/src'
/bin/sh ../libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I../include    -I../src -DCCXX_EXPORT_LIBRARY          -I/usr/include/libxml2 -I../include -g -O2 -D_GNU_SOURCE -c thread.cpp
 g++ -DHAVE_CONFIG_H -I. -I. -I../include -I../src -DCCXX_EXPORT_LIBRARY -I/usr/include/libxml2 -I../include -g -O2 -D_GNU_SOURCE -Wp,-MD,.deps/thread.pp -c thread.cpp  -fPIC -DPIC -o .libs/thread.o
In file included from /usr/include/sys/un.h:38,
                 from ../include/cc++/config.h:601,
                 from thread.cpp:41:
/usr/include/string.h:248: error: parse error before `)' token
In file included from ../include/cc++/missing.h:49,
                 from ../include/cc++/string.h:50,
                 from ../include/cc++/exception.h:54,
                 from thread.cpp:44:
../include/cc++/strchar.h: In member function `virtual int
   ost::keystring::compare(const char*)':
../include/cc++/strchar.h:97: error: `stricmp' undeclared (first use this
   function)
../include/cc++/strchar.h:97: error: (Each undeclared identifier is reported
   only once for each function it appears in.)
thread.cpp: At global scope:
thread.cpp:98: error: multiple storage classes in declaration of `sigcancel'
thread.cpp:1010: error: `thread_cancel_t' was not declared in this scope
thread.cpp:1010: error: parse error before `)' token
thread.cpp:1011: error: prototype for `void ost::Thread::setCancel(...)' does
   not match any in class `ost::Thread'
../include/cc++/thread.h:1046: error: candidate is: void
   ost::Thread::setCancel(ost::Thread::Cancel)
thread.cpp: In member function `void ost::Thread::setCancel(...)':
thread.cpp:1017: error: `mode' undeclared (first use this function)
make[1]: *** [thread.lo] Fehler 1
make[1]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2/src'
make: *** [all-recursive] Fehler 1
die commoncpp2 ist die aktuelle CVS
gcc Version:

Code: Alles auswählen

vdr:/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2_cvs/commoncpp2# gcc -v
Lese Spezifikationen von /usr/lib/gcc/i486-linux/3.4.4/specs
Konfiguriert mit: ../src/configure -v --enable-languages=c,c++,java,f77,pascal,objc,ada,treelang --prefix=/usr --libexecdir=/usr/lib --with-gxx-include-dir=/usr/include/c++/3.4 --enable-shared --with-system-zlib --enable-nls --without-included-gettext --program-suffix=-3.4 --enable-__cxa_atexit --enable-libstdcxx-allocator=mt --enable-clocale=gnu --enable-libstdcxx-debug --enable-java-gc=boehm --enable-java-awt=gtk --disable-werror i486-linux
Thread-Modell: posix
gcc-Version 3.4.4 20050314 (prerelease) (Debian 3.4.3-13)
Sarge/ KDE 3.3

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 25.11.2005 21:13:08

Ich habe mir zuerst die Version 1.3.21 von hier http://www.gnu.org/software/commoncpp/ geholt und konnte sie problemlos erstellen.

Dann habe ich versucht deinen Fehler zu reproduzieren. Also neueste CVS Version geholt und das war mein Ergebnis:

Code: Alles auswählen

/bin/sh ../libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I../include    -I../src -DCCXX_EXPORT_LIBRARY           -I../include -g -O2 -D_GNU_SOURCE -c thread.cpp
 g++ -DHAVE_CONFIG_H -I. -I. -I../include -I../src -DCCXX_EXPORT_LIBRARY -I../include -g -O2 -D_GNU_SOURCE -Wp,-MD,.deps/thread.pp -c thread.cpp  -fPIC -DPIC -o .libs/thread.o
../include/cc++/thread.h:917: error: using typedef-name 'ost::Thread::Cancel' after 'enum'
../include/cc++/thread.h:892: error: 'ost::Thread::Cancel' has a previous declaration here
../include/cc++/thread.h: In member function 'ost::Thread::Cancel ost::Thread::getCancel()':
../include/cc++/thread.h:1195: error: invalid conversion from 'int' to 'ost::Thread::Cancel'
../include/cc++/string.h: At global scope:
../include/cc++/string.h:89: error: ISO C++ forbids declaration of 'MemPager' with no type
../include/cc++/string.h:89: error: expected ';' before '*' token
make[1]: *** [thread.lo] Fehler 1
make[1]: Verlasse Verzeichnis »/home/gms/commoncpp2/src«
make: *** [all-recursive] Fehler 1
Danach habe ich folgendes geändert:
in include/thread.h ein falsches enum entfernt:

Code: Alles auswählen

gms@gms1:~$ diff commoncpp2/include/cc++/thread.h commoncpp2.new/include/cc++/thread.h
917c917
<       enum Cancel _cancel;
---
>       Cancel _cancel ;
in include/string.h eine forward declaration von MemPager eingefügt

Code: Alles auswählen

gms@gms1:~$ diff commoncpp2/include/cc++/string.h commoncpp2.new/include/cc++/string.h
60d59
<
76a76,77
> class MemPager;
>
Danach konnte ich auch diese Version fehlerfrei compilieren

Deinen Fehler in /usr/include/string.h konnte ich bei mir nicht reproduzieren, du hast mir aber auch deine libc6-dev Version nicht angegeben.
Bei meiner Version dieser string.h befindet sich in der Zeile 248 ein Kommentar. Interessant ist auch, daß du unterschiedliche Fehler in der gleichen Zeile bekommen hast:

Code: Alles auswählen

/usr/include/string.h:248: error: parse error before `)' token

Code: Alles auswählen

/usr/include/string.h:248: error: parse error before `char'
Gruß
gms

[edit]
Aja, und nochwas ist höchst merkwürdig:

Code: Alles auswählen

../include/cc++/strchar.h:97: error: `stricmp' undeclared (first use this
   function)
Hier wird eine Win32 API Funktion aufgerufen, die auf Unix-Systemen übliche Version wäre "strcasecmp" (BSD 4.3 konform)
[/edit]

cyberthom
Beiträge: 34
Registriert: 25.03.2004 12:26:18
Wohnort: Berlin

Beitrag von cyberthom » 26.11.2005 21:19:39

Danke erst einmal für die ausführliche Hilfe. Leider haben die Änderungen bei mir nicht geholfen. bei mir läßt sich auch die 1.3.21 nicht kompilieren.
Also muss da bei mir noch etwas anderes nicht stimmen :-(
Wenn ich 1.3.21 kompiliere:
Nehme ich nur ./configure, erhalte ich immer noch "configure: error: no library for posix threads found!"
Gebe ich nun "./configure --with-linuxthreads" oder "./configure --with-pthread=/usr/lib/libpthread.so" ein, erhalte ich nach dem make:

Code: Alles auswählen

vdr:/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2-1.3.21# make
Making all in include
make[1]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2-1.3.21/include'
make  all-recursive
make[2]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2-1.3.21/include'
Making all in cc++
make[3]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2-1.3.21/include/cc++'
make[3]: Für das Ziel »all« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2-1.3.21/include/cc++'
make[3]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2-1.3.21/include'
make[3]: Für das Ziel »all-am« ist nichts zu tun.
make[3]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2-1.3.21/include'
make[2]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2-1.3.21/include'
make[1]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2-1.3.21/include'
Making all in src
make[1]: Entering directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2-1.3.21/src'
if /bin/sh ../libtool --mode=compile g++ -DHAVE_CONFIG_H -I. -I. -I../include    -I../src -DCCXX_EXPORT_LIBRARY -D__USE_GNU -D__USE_UNIX98 -I/usr/local/include/pthread/linuxthreads  -D_GNU_SOURCE -I/usr/include/libxml2 -I../include -g -O2 -MT thread.lo -MD -MP -MF ".deps/thread.Tpo" -c -o thread.lo thread.cpp; \
then mv -f ".deps/thread.Tpo" ".deps/thread.Plo"; else rm -f ".deps/thread.Tpo"; exit 1; fi
mkdir .libs
 g++ -DHAVE_CONFIG_H -I. -I. -I../include -I../src -DCCXX_EXPORT_LIBRARY -D__USE_GNU -D__USE_UNIX98 -I/usr/local/include/pthread/linuxthreads -D_GNU_SOURCE -I/usr/include/libxml2 -I../include -g -O2 -MT thread.lo -MD -MP -MF .deps/thread.Tpo -c thread.cpp  -fPIC -DPIC -o .libs/thread.o
In file included from /usr/include/sys/un.h:38,
                 from ../include/cc++/config.h:793,
                 from thread.cpp:38:
/usr/include/string.h:248: error: parse error before `char'
make[1]: *** [thread.lo] Fehler 1
make[1]: Leaving directory `/usr/src/mmsv2/mmsv2--mainline--1.0.5--patch-41/libs/commoncpp2-1.3.21/src'
make: *** [all-recursive] Fehler 1
Hier meine libc6-dev:

Code: Alles auswählen

ii  libc6-dev      2.3.2.ds1-22   GNU C Library: Development Libraries and Hea
Ich möchte doch so gern MMsv2 auf meinem VDR nutzen ...
Ich nutze übrigens Kernel 2.4.27-ctvdr-1[/code]
Sarge/ KDE 3.3

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 26.11.2005 23:43:57

cyberthom hat geschrieben: Ich möchte doch so gern MMsv2 auf meinem VDR nutzen ...
ist die commoncpp in Sarge zu alt ? Hat die Version 1.0.13:

Code: Alles auswählen

Package libcommoncpp2-1.0-0c102
stable (libs): A GNU package for creating portable C++ programs 
1.0.13-5: alpha amd64 arm hppa i386 ia64 m68k mips mipsel powerpc s390 sparc 
Package libcommoncpp2-dev
stable (libdevel): Header files and static libraries for Common C++ "2" 
1.0.13-5: alpha amd64 arm hppa i386 ia64 m68k mips mipsel powerpc s390 sparc
Meine Compilierungen habe ich übrigens auf der aktuellen Etchversion durchgeführt (dh. libc6-dev hatte die Version 2.3.5-6).
Die /usr/include/string.h aus deiner libc6-dev Version habe ich mir kurz angeschaut. Hier ist das entsprechende Codestück:

Code: Alles auswählen

#if defined __USE_XOPEN2K || defined __USE_MISC
/* Reentrant version of `strerror'.  If a temporary buffer is required, at
   most BUFLEN bytes of BUF will be used.  */
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) __THROW;
#endif
Im Moment habe ich aber noch keine Idee, wieso es zu diesem Fehler kommt. Montag oder Dienstags werde ich das einmal in meiner Sarge-Entwicklungsumgebung in der Firma testen.

Gruß
gms

cyberthom
Beiträge: 34
Registriert: 25.03.2004 12:26:18
Wohnort: Berlin

Beitrag von cyberthom » 28.11.2005 10:44:09

gms hat geschrieben: ist die commoncpp in Sarge zu alt ? Hat die Version 1.0.13:
Die ist wohl leider zu alt... konnte aber bei mmsv2 keine Mindest-Versions-Nummer finden

Die Datei usr/lib/pkgconfig/libccext2.pc gibt es erst bei Etch, leider nicht bei der commoncpp2 Version, die Sarge enthält. Ich kann aber leider nicht so einfach zu Etch wechseln (ctVDR3). PINNING fällt für commoncpp2 leider auch aus wegen zu großer Abhänigkeiten (müßte ja z.B. libc6 updaten)...
Sarge/ KDE 3.3

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.11.2005 21:15:11

Deine Fehler sind leider auch unter Sarge nicht reproduzierbar. Die Version 1.3.21 konnte ich wieder problemlos erstellen.
Wenn du diese kompilierte Version haben möchtest, schicke mir einfach eine PN.

Gruß
gms

cyberthom
Beiträge: 34
Registriert: 25.03.2004 12:26:18
Wohnort: Berlin

Beitrag von cyberthom » 28.11.2005 21:20:44

Dann könnte es eigentlich nur noch am verwendeten Kernel liegen. Du hast sciherlich einen standard-Sarge-Kernel benutzt. Bei mir ist es eben 2.4.27-ctvdr-1. Habe dir eine pn geschickt, danke für die Hilfe.
Sarge/ KDE 3.3

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 28.11.2005 22:27:06

durchaus denkbar.
Ich habe überall den 2.6er Vanillakernel, aber das entscheidende sollte die Version des Pakets "linux-kernel-headers" sein
In meiner Sarge-Umgebung hat dieses Paket die Version 2.5.999-test7-bk-17.

Gruß
gms

cyberthom
Beiträge: 34
Registriert: 25.03.2004 12:26:18
Wohnort: Berlin

Beitrag von cyberthom » 29.11.2005 09:30:36

gms hat geschrieben:durchaus denkbar.
Ich habe überall den 2.6er Vanillakernel, aber das entscheidende sollte die Version des Pakets "linux-kernel-headers" sein
In meiner Sarge-Umgebung hat dieses Paket die Version 2.5.999-test7-bk-17.

Gruß
gms
Hmm ich glaube hier habe ich "gepfuscht" ... ich habe das gelinkt:
/usr/include/linux -> /usr/src/linux/include/linux
und dies zeigt wiederum auf die kernel Sourcen:
/usr/src/linux -> kernel-source-2.4.27-ctvdr-1
Ich dachte, das wäre die sauberste Lösung. Ich war der meinung, dass ein Kernel-Header 2.5.999-test7-bk-17 nicht mit dem Kernel-Source 2.4.27 zusammen passt. Da habe ich wohl etwas falsch verstanden....
Sarge/ KDE 3.3

Antworten