Hallo,
langsam arbeite ich mich in der C-Programmierung voran, bloss steht in
dem Lehrbuch leider nichts zum gcc.
Das man mit gcc -l die erforderlichen Bibliotheken dazulinken kann,
weiss ich inzwischen dank dieser Liste, aber leider immer noch nicht,
welche das jeweils sind. Im aktuellen Programm wird z.B. string.h
benutzt.
Nun will ich nicht jedesmal in der Liste fragen, sondern selber die
Loesung finden. Aber wo steht dazu etwas? Oder nach welchem Stichwort
sollte ich mal suchen? (man gcc hat mir leider nicht weitergeholfen.)
Besten Dank,
Heinz.
--
E-Mail: Heinz W. Pahlke
* Heinz W. Pahlke schrieb am 27.Okt.2001:
langsam arbeite ich mich in der C-Programmierung voran, bloss steht in dem Lehrbuch leider nichts zum gcc.
Welches Lehrbuch hast Du denn? Ist das ein Windowsbuch, oder ein UNIXbuch? Wenn es UNIX ist, so ist gcc so zimmlich eine Obermenge von dem was da angegeben ist.
Das man mit gcc -l die erforderlichen Bibliotheken dazulinken kann, weiss ich inzwischen dank dieser Liste, aber leider immer noch nicht, welche das jeweils sind. Im aktuellen Programm wird z.B. string.h benutzt.
string.h ist keine Bibliothek, sondern eine Haederdatei. Headerdateien werden *vor* dem Compelieren durch die #include Derektive in die Sourcedate eingebunden, und dann erst übersetzt. Bibliotheken werden erst beim Binden mit eingebunden.
Nun will ich nicht jedesmal in der Liste fragen, sondern selber die Loesung finden. Aber wo steht dazu etwas? Oder nach welchem Stichwort sollte ich mal suchen? (man gcc hat mir leider nicht weitergeholfen.)
Welche Headerdateien eingebunden werden müssen, steht in den manpages zu den Bibliotheksfunktionen. Also etwa man strcpy, oder so. Bernd
On 27-Oct-2001 Bernd Brodesser wrote:
* Heinz W. Pahlke schrieb am 27.Okt.2001:
langsam arbeite ich mich in der C-Programmierung voran, bloss steht in dem Lehrbuch leider nichts zum gcc.
Welches Lehrbuch hast Du denn? Ist das ein Windowsbuch, oder ein UNIXbuch? Wenn es UNIX ist, so ist gcc so zimmlich eine Obermenge
Jetzt lerne ich C (von Monadjemi/Winkler). Nicht ganz aktuell, wie ich aus der Liste erfahren habe (z.B. noch "void main" statt "int main"), aber ich habe es mir auch schon vor zwei Jahren gekauft, es dann aber nie durchgearbeitet. Ist sowohl fuer Unix- als auch Windows-User.
welche das jeweils sind. Im aktuellen Programm wird z.B. string.h benutzt.
string.h ist keine Bibliothek, sondern eine Haederdatei.
Ich weiss, aber...
Headerdateien werden *vor* dem Compelieren durch die #include Derektive in die Sourcedate eingebunden, und dann erst übersetzt.
...als ein Programm math.h erforderte und ich es einfach mit "gcc datei.c" uebersetzen wollte, wurde mir gesagt, dass da ein "-lm" fehlt. Und da es mit der Header-Datei string.h jetzt ebenfalls Probleme gibt, dachte ich halt, dass da wiederum beim Kompilieren etwas fehlt.
Welche Headerdateien eingebunden werden müssen, steht in den manpages zu den Bibliotheksfunktionen. Also etwa man strcpy, oder so.
Aber mit "man string" bzw. "man string.h" komme ich eben nicht weiter.
Statt nun immer wieder fragen zu muessen, wollte ich die Loesungssuche
mal etwas systematisieren. Irgendwo muss es ja etwas geben, wo man nach
den jeweils gcc-Optionen suchen kann.
Doch nun erst einmal eine gute Nacht,
Heinz.
--
E-Mail: Heinz W. Pahlke
On Son, 28 Okt 2001, Heinz W. Pahlke wrote:
Aber mit "man string" bzw. "man string.h" komme ich eben nicht weiter. Statt nun immer wieder fragen zu muessen, wollte ich die Loesungssuche mal etwas systematisieren. Irgendwo muss es ja etwas geben, wo man nach den jeweils gcc-Optionen suchen kann.
Naja, du verwendest ja Funktionen in dme Programmen... Wenn du dann
beim Linken eine "unresolved reference to" bekommst kannst du dich
mit nm auf die Suche machen. i.d.R. musst du aber ja spezielle Header
einbinden, um eine andere lib als die libc und die libm (-lc, ist
implizit immer dabei bzw. -lm) verwenden zu koennen.
Bei vielen groesseren Libs gibt's unter Linux -config Scripte, z.B.
bei gtk. Wenn du aclocal/automake/autoconf gibt's dafuer Makros,
per Hand geht das z.B. so:
gcc $CFLAGS $LDFLAGS `gtk-config --cflags --libs` -o programm programm.c
So, und zur Holzhammer-Methode mit nm:
for lib in /lib/*.so /usr/lib/*.so /usr/X11R6/lib/*.so; do
nm "$lib" 2>/dev/null | grep -q "[tT][ ]*funktionsname" && echo "$lib"
done | sort -u
Ggfs. musst du noch in anderen Verzeichnissen suchen. Ausserdem kannst
du auch statt den dynamischen libs *.so die statischen *.a durchsuchen,
aber vermutlich hast du letztere nur zu einen geringen Teil installiert.
Und natuerlich kannst du auch fragen ;)
Ach ja, falls in den Programmbeispielen z.B. der Header
All cats purr at 28hz. I think your cats need tuning - according to a couple of quick measurements on a recently calibrated reference cat, the dominant frequency of a correctly adjusted cat should be 12Hz +/-20%. -- Lionel Lauer
On 28-Oct-2001 David Haller wrote:
So, und zur Holzhammer-Methode mit nm:
for lib in /lib/*.so /usr/lib/*.so /usr/X11R6/lib/*.so; do nm "$lib" 2>/dev/null | grep -q "[tT][ ]*funktionsname" && echo "$lib" done | sort -u
Danke, wieder etwas dazu gelernt. nm kannte ich naemlich noch nicht.
Einen schoenen Sonntagabend,
Heinz.
--
E-Mail: Heinz W. Pahlke
Am Sonntag, 28. Oktober 2001 00:48 schrieb Heinz W. Pahlke:
Aber mit "man string" bzw. "man string.h" komme ich eben nicht weiter. Statt nun immer wieder fragen zu muessen, wollte ich die Loesungssuche mal etwas systematisieren. Irgendwo muss es ja etwas geben, wo man nach den jeweils gcc-Optionen suchen kann.
info gcc -- Machs gut | http://www.iiv.de/schwinde/buerger/tremmel/ | http://www.knightsoft.de Manfred | http://www.knightsoft-net.de
* Heinz W. Pahlke schrieb am 28.Okt.2001:
On 27-Oct-2001 Bernd Brodesser wrote:
Welches Lehrbuch hast Du denn? Ist das ein Windowsbuch, oder ein UNIXbuch? Wenn es UNIX ist, so ist gcc so zimmlich eine Obermenge
Jetzt lerne ich C (von Monadjemi/Winkler). Nicht ganz aktuell, wie ich aus der Liste erfahren habe (z.B. noch "void main" statt "int main"),
Äh, main war schon immer int und noch nie void, von Kernighan/Ritchie angefangen.
aber ich habe es mir auch schon vor zwei Jahren gekauft, es dann aber nie durchgearbeitet. Ist sowohl fuer Unix- als auch Windows-User.
Dann müßte da doch auch was über Bibliotheken drin stehen.
Headerdateien werden *vor* dem Compelieren durch die #include Derektive in die Sourcedate eingebunden, und dann erst übersetzt.
...als ein Programm math.h erforderte und ich es einfach mit "gcc datei.c" uebersetzen wollte, wurde mir gesagt, dass da ein "-lm" fehlt.
Ja, hat aber direkt nichts mit der Headerdatei zu tun. Allerdings ist das bei math schon ein direkter Hinweis.
Und da es mit der Header-Datei string.h jetzt ebenfalls Probleme gibt, dachte ich halt, dass da wiederum beim Kompilieren etwas fehlt.
Bestimmt nicht.
Welche Headerdateien eingebunden werden müssen, steht in den manpages zu den Bibliotheksfunktionen. Also etwa man strcpy, oder so.
Aber mit "man string" bzw. "man string.h" komme ich eben nicht weiter.
Nein, Du mußt die Funktion nehmen. string ist ja keine Funktion. Funktionen sind z.B strcpy, strcmp, strlen, ...
Statt nun immer wieder fragen zu muessen, wollte ich die Loesungssuche mal etwas systematisieren. Irgendwo muss es ja etwas geben, wo man nach den jeweils gcc-Optionen suchen kann.
Das sind auch keine gcc-Options, sondern ld-Options, gcc gibt es lediglich an ld weiter. Siehe hier man ld. ld ist der Binder, der verschiedene Objektdateien und auch Bibliotheken zusammenbindet. Strings brauchen aber nur die Standardbibliotheken. Andere Bibliotheken, die man speziell einbinden muß sind math für Fließpunktzahlen, ncurses und einige andere, besonders für Graphiken. Normalerweise ist der dritte Abschnitt der Manpages in Unterabschnitten unterteilt. Aller Funktionen die in Abschnitt 3M beschrieben sind, bedürfen der Bibliothek m usw. So steht es auch noch in man 3 intro beschrieben. Leider halten sich die Manpages nicht mehr daran. :(( Ach so, wenn Du man strcpy oder so sagst, am Besten gleich man 3 strcpy, denn oft gibt es gleichlautende tcl-Befehle, die sich dan im Abschnit n befinden. PS: Ich würde als zusätzliches Buch den Kernighan/Ritchie aus dem Hanser-Verlag empfehlen. Da wirst Du zwar nicht viel über Graphik finden, aber das mach auch erst nachdem Du C verstanden hast. Die im K&R erwähnten Programme mit dem man die Daten- und andere UNIX-Strukturen bearbeiten kann, sollten auch unter Linux laufen. Bernd -- Probleme mit dem Drucker? Schon die Druckercheckliste beachtet? http://localhost/doc/sdb/de/html/drucker-howto.html | Auch lesenswert: Oder schon das Drucker-HOWTO gelesen? | man lpr file://usr/shar/doc/howto/de/DE-Drucker-HOWTO.txt.gz | Zufallssignatur 3
On 28-Oct-2001 Bernd Brodesser wrote:
* Heinz W. Pahlke schrieb am 28.Okt.2001:
Und da es mit der Header-Datei string.h jetzt ebenfalls Probleme gibt, dachte ich halt, dass da wiederum beim Kompilieren etwas fehlt.
Bestimmt nicht.
Du hast recht (aber wer haette das auch bezweifelt?). Es war ein "<=" statt ">=", was zu einem unsinnigen Ergebnis fuehrte :-( Gefunden habe ich den Fehler, als ich das Programm komplett neu geschrieben habe.
mal etwas systematisieren. Irgendwo muss es ja etwas geben, wo man nach den jeweils gcc-Optionen suchen kann.
Das sind auch keine gcc-Options, sondern ld-Options, gcc gibt es lediglich an ld weiter. Siehe hier man ld. ld ist der Binder, der verschiedene Objektdateien und auch Bibliotheken zusammenbindet. Strings brauchen aber nur die Standardbibliotheken. Andere Bibliotheken, die man speziell einbinden muß sind math für Fließpunktzahlen, ncurses und einige andere, besonders für Graphiken.
Das hilft mir erst mal schon weiter.
PS: Ich würde als zusätzliches Buch den Kernighan/Ritchie aus dem Hanser-Verlag empfehlen. Da wirst Du zwar nicht viel über Graphik finden, aber das mach auch erst nachdem Du C verstanden hast.
An Graphik wage ich noch gar nicht zu denken. Ich beschaeftige mich ja auch nur mit C, weil ich einfach dazu Lust habe und mal wieder etwas Neues lernen moechte.
Die im K&R erwähnten Programme mit dem man die Daten- und andere UNIX-Strukturen bearbeiten kann, sollten auch unter Linux laufen.
Da Kernighan/Ritchie auch schon in anderen Threads empfohlen wurden,
werde ich mir den Band mal bei BOL bestellen.
Einen schoenen Sonntagabend,
Heinz.
--
E-Mail: Heinz W. Pahlke
Hallo, wenn ich php-1.0.4 auf SuSe 7.2 Prof mit ./configure --with-apxs=/usr/local/apache/bin/apxs --with-ftp --enable-track-vars=yes --enable-url-includes --enable-sysvshm=yes --enable-sysvsem=yes --with-config-file-path=/etc Compiliere kommt dauernt dieser Fehler: loading cache ./config.cache checking for a BSD compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking whether make sets ${MAKE}... yes checking for working aclocal... found checking for working autoconf... found checking for working automake... found checking for working autoheader... found checking for working makeinfo... missing checking whether to enable maintainer-specific portions of Makefiles... no checking host system type... i686-pc-linux-gnu checking for gawk... gawk checking for bison... bison -y checking bison version... 1.28 (ok) checking for gcc... gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... yes checking whether gcc accepts -g... yes checking how to run the C preprocessor... gcc -E checking for AIX... no checking for gcc option to accept ANSI C... none needed checking for ranlib... ranlib checking whether gcc and cc understand -c and -o together... yes checking whether ln -s works... yes checking for flex... lex checking for yywrap in -ll... no checking lex output file root... ./configure: lex: command not found configure: error: cannot find output from lex; giving up Was soll "lex" bedeuten ? Wie kann ich den Fehler behebn bzw. vermeiden ? Danke Nools -- GMX - Die Kommunikationsplattform im Internet. http://www.gmx.net
Nools Nools wrote: Heiist du wirklich Nools Nools ? [...]
checking for flex... lex checking for yywrap in -ll... no checking lex output file root... ./configure: lex: command not found configure: error: cannot find output from lex; giving up
Was soll "lex" bedeuten ? Wie kann ich den Fehler behebn bzw. vermeiden ? Paket lex (Serie d)) installieren -- Markus Kossmann markus.kossmann@inka.de
Nools Nools wrote:
wenn ich php-1.0.4 auf SuSe 7.2 Prof mit ./configure --with-apxs=/usr/local/apache/bin/apxs --with-ftp --enable-track-vars=yes --enable-url-includes --enable-sysvshm=yes --enable-sysvsem=yes --with-config-file-path=/etc Compiliere kommt dauernt dieser Fehler: [....] checking lex output file root... ./configure: lex: command not found configure: error: cannot find output from lex; giving up
Was soll "lex" bedeuten ? Wie kann ich den Fehler behebn bzw. vermeiden ?
Installiere das Paket "flex". Um mehr ueber lex (bzw. flex) zu erfahren, siehe "man flex". Siehe auch die Paketauskunft von Yast. Gruesse, Th. -- Thomas Hertweck, Geophysicist Geophysical Institute, University of Karlsruhe
On Sun, Oct 28, 2001 at 04:15:38PM +0100, Nools Nools wrote:
checking for flex... lex checking for yywrap in -ll... no checking lex output file root... ./configure: lex: command not found configure: error: cannot find output from lex; giving up
configure legt eine Datei "config.log" an. Dort steht meistens mehr als ./configure ausgibt. Peter
participants (9)
-
B.Brodesser@t-online.de
-
David Haller
-
Heinz W. Pahlke
-
Manfred Tremmel
-
Markus Kossmann
-
Nools Nools
-
Peter Wiersig
-
Thomas Hertweck
-
Thorsten Haude