Kompilierfehler bei dgtnix 1.9.1

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Kompilierfehler bei dgtnix 1.9.1

Beitrag von Spasswolf » 20.08.2008 09:16:42

Wenn ich dich richtig verstehe, hattest du auch den Fehler wegen der fehlenden Deklaration der "exit"-Funktion.
Ja.

Mir scheint es so, dass das eigentliche Problem eine fehlerhafte gcc-4.3 Installation ist.

Edit: Ich hab das gerade mal mit einem frisch debootstrapten Sid ausprobiert, da taucht nur der exit Fehler auf, den man mit "#include <cstdlib>" korrigieren kann.

Benutzeravatar
Twilo
Beiträge: 255
Registriert: 21.04.2006 00:59:40
Wohnort: Berlin

Re: Kompilierfehler bei dgtnix 1.9.1

Beitrag von Twilo » 20.08.2008 11:23:37

Hallo,

@gms
wenn ich heute Abend @home bin, werde ich das mit den neuen Includezeilen ausprobieren.

@Spasswolf
reicht da ein "aptitude reinstall gcc-4.3 gcc-4.3-base" aus?

mfg
Twilo

Benutzeravatar
Twilo
Beiträge: 255
Registriert: 21.04.2006 00:59:40
Wohnort: Berlin

Re: Kompilierfehler bei dgtnix 1.9.1

Beitrag von Twilo » 20.08.2008 20:54:30

Hallo,

@gms
ich habe beide Varianten probiert - bei beiden kommt der selbe Fehler

@Spasswolf
nach ein "aptitude reinstall gcc-4.3 gcc-4.3-base" tritt der Fehler immer noch auf


Was verursacht nur den Fehler? 8O

mfg
Twilo

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

Re: Kompilierfehler bei dgtnix 1.9.1

Beitrag von gms » 20.08.2008 21:22:45

probier einmal ob nach einem "make -k" die Library gebaut wurde

Code: Alles auswählen

gms@gms1 ~/tmp/dgtnix-1.9.1 $ find -name "*.so"
./src/.libs/libdgtnix.so
eventuell kannst du auf dieses Testprogramm verzichten

Benutzeravatar
Twilo
Beiträge: 255
Registriert: 21.04.2006 00:59:40
Wohnort: Berlin

Re: Kompilierfehler bei dgtnix 1.9.1

Beitrag von Twilo » 20.08.2008 22:27:47

Hallo,

"make -k" klappt leider auch nicht, er findet die Datei stddef.h nicht.
Die Fehlermeldung ist jetzt etwas anders.

mfg
Twilo

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

Re: Kompilierfehler bei dgtnix 1.9.1

Beitrag von gms » 20.08.2008 22:31:39

nach meiner Interpretation von dieser Ausgabe

Code: Alles auswählen

make[2]: Entering directory `/home/usr/src/dgtnix-1.9.1/src'
if /bin/sh ../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I. -I..    -I../include/  -g -O2 -MT libdgtnix_la-dgtnix.lo -MD -MP -MF ".deps/libdgtnix_la-dgtnix.Tpo" -c -o libdgtnix_la-dgtnix.lo `test -f 'dgtnix.c' || echo './'`dgtnix.c; \
        then mv -f ".deps/libdgtnix_la-dgtnix.Tpo" ".deps/libdgtnix_la-dgtnix.Plo"; else rm -f ".deps/libdgtnix_la-dgtnix.Tpo"; exit 1; fi
mkdir .libs
 gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include/ -g -O2 -MT libdgtnix_la-dgtnix.lo -MD -MP -MF .deps/libdgtnix_la-dgtnix.Tpo -c dgtnix.c  -fPIC -DPIC -o .libs/libdgtnix_la-dgtnix.o
 gcc -DHAVE_CONFIG_H -I. -I. -I.. -I../include/ -g -O2 -MT libdgtnix_la-dgtnix.lo -MD -MP -MF .deps/libdgtnix_la-dgtnix.Tpo -c dgtnix.c -o libdgtnix_la-dgtnix.o >/dev/null 2>&1
/bin/sh ../libtool --tag=CC --mode=link gcc  -g -O2   -o libdgtnix.la -rpath /usr/local/lib -lpthread  libdgtnix_la-dgtnix.lo -release 1 -version-info 9:1
gcc -shared  .libs/libdgtnix_la-dgtnix.o  -lpthread  -Wl,-soname -Wl,libdgtnix-1.so.9 -o .libs/libdgtnix-1.so.9.0.1
(cd .libs && rm -f libdgtnix-1.so.9 && ln -s libdgtnix-1.so.9.0.1 libdgtnix-1.so.9)
(cd .libs && rm -f libdgtnix.so && ln -s libdgtnix-1.so.9.0.1 libdgtnix.so)
ar cru .libs/libdgtnix.a  libdgtnix_la-dgtnix.o
ranlib .libs/libdgtnix.a
creating libdgtnix.la
(cd .libs && rm -f libdgtnix.la && ln -s ../libdgtnix.la libdgtnix.la)
make[2]: Leaving directory `/home/usr/src/dgtnix-1.9.1/src'
wurde die Library korrekt erstellt, nur das Testprogramm hat ein Problem


edit: Das heißt dann aber auch, daß eher die Pakete "g++-4.3" und "libstdc++6-4.3-dev" einen Knacks haben

Spasswolf
Beiträge: 3472
Registriert: 30.11.2005 10:32:22
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Wald

Re: Kompilierfehler bei dgtnix 1.9.1

Beitrag von Spasswolf » 20.08.2008 23:10:08

Ich habe jetzt mal die Situation mit dem Symlink /usr -> /home/usr nachgestellt und kann deine Fehlermeldungen reproduzieren. Der Symlink ist also das Problem.

Edit: Du kannst das Problem umgehen indem du in der Datei /usr/include/c++/4.3/cstddef die Zeile 48:

Code: Alles auswählen

#include_next <stddef.h>
In

Code: Alles auswählen

#include "../lib/gcc/x86_64-linux-gnu/4.3/include/stddef.h"
änderst. Allerdings könnten ähnliche Probleme auch bei weiteren Header auftreten, also solltest du am besten die Symlink Sache in Ordnung bringen.

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

Re: Kompilierfehler bei dgtnix 1.9.1

Beitrag von gms » 20.08.2008 23:21:06

Spasswolf hat geschrieben:Ich habe jetzt mal die Situation mit dem Symlink /usr -> /home/usr nachgestellt und kann deine Fehlermeldungen reproduzieren. Der Symlink ist also das Problem.
wow, den hatte ich ja schwer im im Verdacht, nur ist mir keine Erklärung dazu eingefallen. Symlinks dürfen nur eine gewisse Verschachtelungstiefe haben, aber diese kann doch hier noch nicht erreicht sein und das "ls -l" auf die gesuchte Datei hat auch funktioniert.

@Twilo
statt dem Symlink könntest du auch ein bind-Mount von /home/usr auf /usr machen

Gruß
gms

Benutzeravatar
Twilo
Beiträge: 255
Registriert: 21.04.2006 00:59:40
Wohnort: Berlin

Re: Kompilierfehler bei dgtnix 1.9.1

Beitrag von Twilo » 21.08.2008 00:18:40

Hallo,

nach ein

Code: Alles auswählen

unlink /usr;
mkdir /usr;
mount --bind /home/usr /usr
läuft make und make install jetzt durch

wenn ich das Programm jetzt aufrufe findet er eine so Datei nicht

Code: Alles auswählen

dgtnixTest --help
dgtnixTest: error while loading shared libraries: libdgtnix-1.so.9: cannot open shared object file: No such file or directory

Code: Alles auswählen

ls -l /usr/local/lib/libdgtnix-1.so.9
lrwxrwxrwx 1 root staff 20 21. Aug 00:10 /usr/local/lib/libdgtnix-1.so.9 -> libdgtnix-1.so.9.0.1
nun frage ich mich, warum er die Datei nicht findet :?

ps. ist der bind Mount Eintrag für die fstab so richtig?
/home/usr /usr none bind 0 0
mfg
Twilo
Zuletzt geändert von Twilo am 21.08.2008 09:44:08, insgesamt 1-mal geändert.

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

Re: Kompilierfehler bei dgtnix 1.9.1

Beitrag von gms » 21.08.2008 09:21:55

Twilo hat geschrieben: ps. ist der bind Mount Eintrag für die fstab so richtig?
/home/usr /usr none bind 0 0
ich schreibe immer statt dem "none" ein "auto", wird aber wahrscheinlich so auch funktionieren

Twilo hat geschrieben: nun frage ich mich, warum er die Datei schon wieder nicht findet :?
da hats noch einen kleinen Fehler im Makefile:

Code: Alles auswählen

root@gms2:~/tmp# diff -U0 dgtnix-1.9.1.ori/utils/Makefile.in dgtnix-1.9.1/utils/Makefile.in
--- dgtnix-1.9.1.ori/utils/Makefile.in  2007-02-07 17:28:29.000000000 +0100
+++ dgtnix-1.9.1/utils/Makefile.in      2008-08-21 09:17:29.000000000 +0200
@@ -247 +247 @@
-       $(CXXLINK) $(dgtnixTest_LDFLAGS) $(dgtnixTest_OBJECTS) $(dgtnixTest_LDADD) $(LIBS)
+       $(CXXLINK) $(dgtnixTest_LDFLAGS)  -rpath $(libdir)  $(dgtnixTest_OBJECTS) $(dgtnixTest_LDADD) $(LIBS)
wenn du dort die "-rpath" Option hinzufügst ( danach nochmals das ./configure aufrufen ) und das Programm neu erstellst, sollte es funktionieren

Gruß
gms

Benutzeravatar
Twilo
Beiträge: 255
Registriert: 21.04.2006 00:59:40
Wohnort: Berlin

Re: Kompilierfehler bei dgtnix 1.9.1

Beitrag von Twilo » 21.08.2008 22:45:21

Hallo,
gms hat geschrieben:da hats noch einen kleinen Fehler im Makefile:

Code: Alles auswählen

root@gms2:~/tmp# diff -U0 dgtnix-1.9.1.ori/utils/Makefile.in dgtnix-1.9.1/utils/Makefile.in
--- dgtnix-1.9.1.ori/utils/Makefile.in  2007-02-07 17:28:29.000000000 +0100
+++ dgtnix-1.9.1/utils/Makefile.in      2008-08-21 09:17:29.000000000 +0200
@@ -247 +247 @@
-       $(CXXLINK) $(dgtnixTest_LDFLAGS) $(dgtnixTest_OBJECTS) $(dgtnixTest_LDADD) $(LIBS)
+       $(CXXLINK) $(dgtnixTest_LDFLAGS)  -rpath $(libdir)  $(dgtnixTest_OBJECTS) $(dgtnixTest_LDADD) $(LIBS)
wenn du dort die "-rpath" Option hinzufügst ( danach nochmals das ./configure aufrufen ) und das Programm neu erstellst, sollte es funktionieren
danke, damit hat es funktioniert.

jetzt muss ich nur noch in Erfahrung bringen, warum die Datei dgtnixTest.py dgtnix nicht importieren kann

Code: Alles auswählen

kay@kay-desktop:~$ dgtnixTest.py
Traceback (most recent call last):
  File "/usr/local/bin/dgtnixTest.py", line 29, in <module>
    from dgtnix import *
ImportError: No module named dgtnix
ich frage mich auch, wo die GUI versteckt ist :wink:

Im trunk gibt es ein Verzeichnis gtnixQtWidget.
dort erhalte ich beim make folgende Fehlermeldung

Code: Alles auswählen

[...]
configdialog.cpp:1:17: error: QtGui: Datei oder Verzeichnis nicht gefunden
In file included from configdialog.cpp:3:
configdialog.h:4:19: error: QDialog: Datei oder Verzeichnis nicht gefunden
In file included from configdialog.cpp:3:
configdialog.h:11: error: expected class-name before ‘{’ token
configdialog.h:12: error: ISO C++ forbids declaration of ‘Q_OBJECT’ with no type
[...]
libqt4-dev ist jedoch installiert... hm...

Danke euch beiden :-)

mfg
Twilo

Antworten