Hallo Allemiteinander,
ich war schon fast dabei, meinen Distributor zu verfluchen, aber das brauche ich nun nicht. Grund:
Ich brauchte für eine Berechnung die Funktion sqrt(), diese wird aber scheinbar nicht unterstützt. Ich dachte erst das meine math.h kaputt sei, aber unter Knoppix tritt der selbe Fehler auf.
/tmp/ccZLREYg.o(.text+0x1e): In function `main': : undefined reference to `sqrt' collect2: ld returned 1 exit status
(Nicht unterstützt ist falsch gesagt, immerhin meckert gcc, wenn Parameter zu viel oder zu wenig sind.)
Der Fehler tritt bei allen mathematischen Funktionen auf (die ich ausprobiert habe).
Muss ich jetzt alle meine C-Kenntnisse aufbringen und mir diese Funktionen selbst schreiben? *heul*
Danke für Eure Antwort.
Falk
Am Do, den 27.05.2004 schrieb Falk Döring um 19:55:
/tmp/ccZLREYg.o(.text+0x1e): In function `main': : undefined reference to `sqrt' collect2: ld returned 1 exit status
Hallo Falk, Du hast vergessen die Bibliothek libm.a dazuzulinken.
z.B. so: gcc main.o -o main -lm
Tobias
Pauca sed matura. [Few but excellent.] -- Gauss
On Thu May 27, 2004 at 17:55:12 +0000, Falk Döring wrote:
/tmp/ccZLREYg.o(.text+0x1e): In function `main': : undefined reference to `sqrt' collect2: ld returned 1 exit status
(Nicht unterstützt ist falsch gesagt, immerhin meckert gcc, wenn Parameter zu viel oder zu wenig sind.)
Der Fehler tritt bei allen mathematischen Funktionen auf (die ich ausprobiert habe).
Muss ich jetzt alle meine C-Kenntnisse aufbringen und mir diese Funktionen selbst schreiben? *heul*
Noe, ein -lm an deinen gcc Aufruf dranhängen sollte schon helfen.
Adam
On Thu, May 27, 2004 at 05:55:12PM +0000, Falk Döring wrote:
Hallo Allemiteinander,
Hi Falk,
ich war schon fast dabei, meinen Distributor zu verfluchen, aber das brauche ich nun nicht. Grund:
Ich brauchte für eine Berechnung die Funktion sqrt(), diese wird aber scheinbar nicht unterstützt. Ich dachte erst das meine math.h kaputt sei, aber unter Knoppix tritt der selbe Fehler auf.
/tmp/ccZLREYg.o(.text+0x1e): In function `main': : undefined reference to `sqrt' collect2: ld returned 1 exit status
Hmm, dann solltest du dein Programm evtl. gegen die libmath linken, damit der gcc die Funktion auch findet... Ein gcc meinproc.c -o meinproc -lm sollte klappen.
Ciao, Tobias
Tobias Koenig schrieb am Donnerstag, 27. Mai 2004 17:27:
On Thu, May 27, 2004 at 05:55:12PM +0000, Falk Döring wrote:
Hallo Allemiteinander,
Hi Falk,
ich war schon fast dabei, meinen Distributor zu verfluchen, aber das brauche ich nun nicht. Grund:
Ich brauchte für eine Berechnung die Funktion sqrt(), diese wird aber scheinbar nicht unterstützt. Ich dachte erst das meine math.h kaputt sei, aber unter Knoppix tritt der selbe Fehler auf.
/tmp/ccZLREYg.o(.text+0x1e): In function `main': : undefined reference to `sqrt'
collect2: ld returned 1 exit status
Hmm, dann solltest du dein Programm evtl. gegen die libmath linken, damit der gcc die Funktion auch findet... Ein gcc meinproc.c -o meinproc -lm sollte klappen.
Warum muss ich das unter Linux und nicht unter Solaris? (Dort habe ich C gelernt)
Ciao, Tobias
On 28.05.04 Falk Döring (falk.doering@web.de) wrote:
Tobias Koenig schrieb am Donnerstag, 27. Mai 2004 17:27:
Hi,
Hmm, dann solltest du dein Programm evtl. gegen die libmath linken, damit der gcc die Funktion auch findet... Ein gcc meinproc.c -o meinproc -lm sollte klappen.
Warum muss ich das unter Linux und nicht unter Solaris? (Dort habe ich C gelernt)
Benutzt Slowlaris die glibc? Wohl eher nicht. Da wird wohl automatisch gegen die Lib gelinkt, in der sqrt() enthalten ist. Irgendwo kann man wohl auch festlegen, welche Lib ohne Angabe eines -l Flags verwendet wird. /usr/lib/gcc-lib/i386-linux/2.95.4/specs (Debian woody) sieht danach aus.
H.
Hilmar Preusse schrieb am Freitag, 28. Mai 2004 10:09:
On 28.05.04 Falk Döring (falk.doering@web.de) wrote:
Tobias Koenig schrieb am Donnerstag, 27. Mai 2004 17:27:
Hi,
Hmm, dann solltest du dein Programm evtl. gegen die libmath linken, damit der gcc die Funktion auch findet... Ein gcc meinproc.c -o meinproc -lm sollte klappen.
Warum muss ich das unter Linux und nicht unter Solaris? (Dort habe ich C gelernt)
Benutzt Slowlaris die glibc? Wohl eher nicht. Da wird wohl automatisch gegen die Lib gelinkt, in der sqrt() enthalten ist. Irgendwo kann man wohl auch festlegen, welche Lib ohne Angabe eines -l Flags verwendet wird. /usr/lib/gcc-lib/i386-linux/2.95.4/specs (Debian woody) sieht danach aus.
1.) Was hast du gegen Solaris? (Bis auf den Naja-Standard-Desktop habe ich nichts gefunden, warum man den Namen so verhunzen muss). 2.) Wir haben den gcc genutzt. Er hat sich zumindest so ausgegeben, wenn man ihn mit gcc --version gefragt hat.
Falk
On Fri, 2004-05-28 at 20:26, Falk Döring wrote: ["Slowlaris"]
1.) Was hast du gegen Solaris? (Bis auf den Naja-Standard-Desktop habe ich nichts gefunden, warum man den Namen so verhunzen muss).
Slow -> Langsam?
Ich kann nicht für dickes Eisen sprechen, aber auf meinen alten Hobeln laufen Linux und NetBSD fühlbar schneller als Solaris. Und früher, ganz, ganz früher (um genau zu sein, vor 5 Jahren) lief auch Solaris 7 x86 auf meinem K6 lahmer als Linux und sogar <fluester>Windows </fluester>.
Eric
On 28.05.04 Falk Döring (falk.doering@web.de) wrote:
Moin,
2.) Wir haben den gcc genutzt. Er hat sich zumindest so ausgegeben, wenn man ihn mit gcc --version gefragt hat.
Also gut:
drachi:[hille] >more z.c #include<stdio.h> #include<math.h>
int main() { printf("%1.2f\n",sqrt(5)); } drachi:[hille] >gcc z.c drachi:[hille] >gcc --version 2.95.4 drachi:[hille] >ldd a.out libc.so.6 => /lib/libc.so.6 (0x40021000) libm.so.6 => /lib/libm.so.6 (0x4013e000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) drachi:[hille] >more /etc/debian_version 3.0 drachi:[hille] >
Nachdem ich das specs-file passend verbogen hab. Außerdem kann Solaris die sqrt-Funktion in der Standard-Lib haben, gegen die immer gelinkt wird. 1. Ich hab keine Ahnung, welche libc ihr hattet. 2. Ich weiß nicht ob man glibc evntl. auch so bauen kann, daß libc und libm zusammen liegen. Ein ldd auf ein Solaris-Binary würde Dir mehr erzählen. Fazit: Zieh Dir mal das ganze Library-Konzept rein, ich fürchte das ist etwas den Bach runtergegangen/nicht erklärt worden.
H.
On Fri, May 28, 2004 at 06:45:22AM +0000, Falk D?ring wrote:
Warum muss ich das unter Linux und nicht unter Solaris? (Dort habe ich C gelernt)
Bestimmte Bibliotheken (z.B. die libc) werden immer eingebunden. Vielleicht faellt unter Solaris die libmath auch unter diese Kategorie.
cu, Ulf
Hallo Falk,
On Thu, May 27, 2004 at 05:55:12PM +0000, Falk D?ring wrote:
/tmp/ccZLREYg.o(.text+0x1e): In function `main': : undefined reference to `sqrt' collect2: ld returned 1 exit status
Interessant waeren noch die Optionen, die Du dem gcc mitgegeben hast. Ich vermute, Du hast -lm vergessen.
Holger
/tmp/ccZLREYg.o(.text+0x1e): In function `main': : undefined reference to `sqrt'
Hallo Falk,
das übersetzen klappt bei mir mit:
gcc -o Wurzel Wurzel.c -lm
#include <stdio.h> #include "math.h"
int main(int argc, char** argv) { int zahl = 0; if(argc == 2) { sscanf(argv[1],"%ld",&zahl); printf("\n Wurzel von %s ist: %lf \n\n",argv[1],sqrt(zahl)); } return 0; }
Viele Grüße - Dirk
On 27.05.04 Klaus Boxer (Boxer66@gmx.net) wrote:
Viele Grüße - Dirk
Oh Gott!
SCNR, H.
Und wenn das alles nicht funktioniert, gibts immer noch Perl:
#include <stdio.h>
double sqrt(double x){ char s[100]; sprintf(s,"perl -e "print sqrt(%lg)"",x); FILE *p=popen(s,"r"); fscanf(p,"%lf",&x); pclose(p); return x; }
Am Do, den 27.05.2004 schrieb Hilmar Preusse um 23:38:
On 27.05.04 Klaus Boxer (Boxer66@gmx.net) wrote:
Viele Grüße - Dirk
Oh Gott!
SCNR, H.
People with narrow minds usually have broad tongues.
On 28.05.04 Tobias Hientzsch (t_hientzsch@gmx.de) wrote:
Und wenn das alles nicht funktioniert, gibts immer noch Perl:
#include <stdio.h>
double sqrt(double x){ char s[100]; sprintf(s,"perl -e "print sqrt(%lg)"",x); FILE *p=popen(s,"r"); fscanf(p,"%lf",&x); pclose(p); return x; }
Du hast den Smiley vergessen?
drachi:[hille] >gcc z.c z.c: In function `sqrt': z.c:6: parse error before `*' z.c:7: `p' undeclared (first use in this function) z.c:7: (Each undeclared identifier is reported only once z.c:7: for each function it appears in.) drachi:[hille] >
H.
Am Fr, den 28.05.2004 schrieb Hilmar Preusse um 12:16:
Du hast den Smiley vergessen?
Der Smiley steht im Subject.
drachi:[hille] >gcc z.c z.c: In function `sqrt': z.c:6: parse error before `*'
Der Code lässt sich bei mir allerdings kompilieren (gcc 3.3.3). Vielleicht hast du "#include <stdio.h>" vergessen (siehe "man popen").
Tobias
-- Modeling paged and segmented memories is tricky business. -- P.J. Denning
On Friday 28 May 2004 16:16, Tobias Hientzsch wrote:
Am Fr, den 28.05.2004 schrieb Hilmar Preusse um 12:16:
Du hast den Smiley vergessen?
Der Smiley steht im Subject.
drachi:[hille] >gcc z.c z.c: In function `sqrt': z.c:6: parse error before `*'
Der Code lässt sich bei mir allerdings kompilieren (gcc 3.3.3). Vielleicht hast du "#include <stdio.h>" vergessen (siehe "man popen").
Mit C++ stimme ich Dir zu. Bei C dürfen Variablen nur VOR den Statements definiert werden.
Konrad
On 28.05.04 Tobias Hientzsch (t_hientzsch@gmx.de) wrote:
Am Fr, den 28.05.2004 schrieb Hilmar Preusse um 12:16:
Moin,
drachi:[hille] >gcc z.c z.c: In function `sqrt': z.c:6: parse error before `*'
Der Code lässt sich bei mir allerdings kompilieren (gcc 3.3.3). Vielleicht hast du "#include <stdio.h>" vergessen (siehe "man popen").
drachi:[hille] >gcc-3.0 -c z1.c drachi:[hille] >
Das andere war eine 2.95.4. Neumodisches Zeugs!
H.
/tmp/ccZLREYg.o(.text+0x1e): In function `main': : undefined reference to `sqrt'
Hallo Falk,
das übersetzen klappt bei mir mit:
gcc -o Wurzel Wurzel.c -lm
#include <stdio.h> #include "math.h"
int main(int argc, char** argv) { int zahl = 0; if(argc == 2) { sscanf(argv[1],"%ld",&zahl); printf("\n Wurzel von %s ist: %lf \n\n",argv[1],sqrt(zahl)); } return 0; }
Viele Grüße - Dirk
lug-dd@mailman.schlittermann.de