• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Dreisatz für Idioten

Hallo,

kann mal jemand für einen Umsteiger das manuelle Kompilieren erläutern. Hintergrund: Ich will Tesseract als Scann-Programm installieren. Das Ding also heruntergeladen und auf der Konsole in das Verzeichnis gewechselt.

./configure
make
make install

Sieht ja eigentlich einfach aus. ./configure funktionierte anstandslos. Jetzt hängt er bei make und will ein target:

make: *** Keine Targets angegeben und keine »make«-Steuerdatei gefunden. Schluss.


Ich denke, ./configure legt alles automatisch unter /usr ab und make greift automatisch darauf zu, oder muss ich da noch manuell einen Operator angeben? Das verwirrt doch etwas :???:

Für einen kurzen Tipp wäre ich sehr dankbar.
 

admine

Ultimate Guru
http://wiki.linux-club.de/opensuse/Software_aus_dem_Quelltext_Installieren/Deinstallieren
;)

Ist ./configure wirklich sauber durchgelaufen?
 

/dev/null

Moderator
Teammitglied
Hallo Bitte_umsteigen,

vergiss nicht, auch die Sprachdateien mit zu installieren (und evtl. auch das GUI).
Und sei vor allem wegen des Ergebnisses nicht allzusehr enttäuscht.

MfrG Peter
 
Hallo zusammen,

ja, wie es generell geht, habe ich verstanden :D Configure lief durch, wie es aussieht fehlerfrei. Aber wieso meckert make? Das ist der Knackpunkt! Die Fehlermeldungen sind so hilfreich wie "Allgemeiner Flügelfehler" wenn das Flugzeug abstürzt ;)

Ich habe direkt das ganze tar Archiv von der Herstellerseite runtergeladen. Sollte also funzen.
 
Aha! In der Readme steht was von Leptonica benötigt. Das hatte ich ganz übersehen, obwohl ich die Install-Anleitung 3x durchgelesen habe. Gibt es noch was Besseres als Tesseract zum Scannen? Kann ja nicht der Einzige sein, der unter OpenSuse mal einen Text einlesen will ;)
 

josef-wien

Ultimate Guru
Hast Du alle auf der readme-Seite angeführten Voraussetzungen erfüllt? Ich finde weder libtiff4-devel (vielleicht reicht libtiff-devel) noch zlib1g[-devel], dafür existiert liblept-devel. Du siehst, es ist mitunter gar nicht so einfach, Programme selbst zu übersetzen.

Vor allem wegen
/dev/null schrieb:
Und sei vor allem wegen des Ergebnisses nicht allzusehr enttäuscht.
solltest Du es erst einmal mit den bereits vorhandenen rpm-Paketen versuchen.
 
Laut Herstellerseite sollte in dem .tar Archiv, das ich runtergeladen habe, alle Dateien inkl. Sprachdateien drin sein. War wahrscheinlich Wunschdenken :roll:
Bei dem Link von tomm.fa kommt eine Warnung, dass es sich um unstabile Packages handelt. Soll ich das wirklich nehmen? Und was ist davon das RPM Paket? Probiere gleich noch den anderen Link.

Danke erstmals.

Gruss
 

tomm.fa

Administrator
Teammitglied
Nachdem du das gepackte Archiv ausgepackt hast, da hast du ja gleich mit configure angefangen. Weshalb nicht, wie in der README angegeben, mit autogen.

Ich hatte jetzt alle (RPM aus dem OBS) vorgeschlagenenProgramme mal ausprobiert (cuneiform-qt mit cuneiform, cuneiform pur; yagf mit cuneiform und tesseract; tesseract pur). Zur Umwandlung habe ich eine Heftseite im Format PNG genommen. Die Ergebnisse waren niederschmetternd, nicht zu gebrauchen. Beim Versuch mit gOCR konnte man aber teilweise lesbare Sätze im ausgegebenen Text erkennen.
 

abgdf

Guru
make: *** Keine Targets angegeben und keine »make«-Steuerdatei gefunden. Schluss.
make erwartet eine Datei "Makefile" in demselben Verzeichnis wie "configure" (und der Rest).
In dieser Datei "Makefile" sind dann weitere Kompilieranweisungen, jedenfalls sollten sie da sein.

Kompilieren ist immer mehr oder weniger Glückssache, wobei die Chance umso höher ist, je mehr Ahnung man von C/C++-Programmierung, vom Compiler und vom Kompiliervorgang hat.
Wenn man darüber wenig weiß (wie der ganz überwiegende Teil der Benutzer), ist es besser, ein rpm zu versuchen.
Mit dem Dreisatz allein ist es nur ganz selten getan.

Oder anders ausgedrückt: Der Dreisatz ist nie für Idioten. Er setzt vielmehr allerhand Kenntnisse voraus. (Das bezieht sich jetzt nicht auf Dich, sondern nur auf den Titel des Themas.)
 
@tomm.fa

Ich habe ./configure, make, make install genommen, da es so im File INSTALL steht. Der Erzeuger sollte ja wissen, wie sein Programm aufgebaut ist ;) Ich vermute, dass da irgendeine Header-Datei fehlt.

@abgdf

Unter Windows habe ich etwas C++ versucht, und weiß, dass bei 80% Quellcode irgendeine Ressource fehlt ;) In der Linux-Welt empfinden es viele halt als uncool fertige Programme auszuliefern, oder eine grafische Benutzeroberfläche zu nehmen. Aber natürlich ist mir ein rpm lieber, oft sind die aber nicht besonders gut beschriftet und man sucht wie blöd.
 
Auch wenn es an abgdf war: Es hat nichts mit "uncool" zu tun wenn Software nur als source-code zur Verfügung steht. Meist ist dies ein Zeichen dafür das sie im alpha oder beta-status ist. Somit kann jeder der etwas beitragen könnte dies auch tun, egal auf welcher Distribution er arbeitet. Dafür braucht man Programmierer. Wenn die Software dann halbwegs stabil läuft und genug features drin sind, werden sich die entsprechenden Leute schon finden die es dann für die Distributionen bereit stellen. Meist natürlich in mehr oder minder "privater Form" wie unoffizielle Repos oder entsprechend als experimentell deklarierten und von diesen wandert es dann in die offiziellen Wege.
 
Hallo Geier,

Vorweg, ich wollte niemand angreifen! Ich stelle jedoch die Tendenz fest, Windows-Umsteigern relativ arrogant gegenüber zu treten. Quellcode mit ./configure, make, make install zu kompilieren, ist kein Problem WENN alle Programmierer sich an den logischen Aufbau halten. Als ich anmerkte, dass beim Kompilieren von Tesseract make meckert, war ich halt wieder der blöde "Klickibunti". Einmal habe ich in einem Artikel vergessen, den Code richtig einzurücken, und beim Thema Windows löschen habe ich etwas angefügt, weil ich "Gelöst" zu spät bemerkte. Das sind halt Anfängerfehler im Forum. Muss man deshalb gleich ausflippen? Take it easy ;)
 

abgdf

Guru
Bitte_umsteigen schrieb:
@tomm.fa
Ich habe ./configure, make, make install genommen, da es so im File INSTALL steht. Der Erzeuger sollte ja wissen, wie sein Programm aufgebaut ist ;) Ich vermute, dass da irgendeine Header-Datei fehlt.
Oben hatte ich schon gesagt, daß der Fehler bedeutet, daß kein "Makefile" vorhanden ist.
tomm.fa hatte Dir auch schon einen Lösungsvorschlag geschrieben:
tomm.fa schrieb:
Nachdem du das gepackte Archiv ausgepackt hast, da hast du ja gleich mit configure angefangen. Weshalb nicht, wie in der README angegeben, mit autogen.
Also, vor "./configure" erst "autogen" versuchen.
Bitte_umsteigen schrieb:
Unter Windows habe ich etwas C++ versucht, und weiß, dass bei 80% Quellcode irgendeine Ressource fehlt ;) In der Linux-Welt empfinden es viele halt als uncool fertige Programme auszuliefern, oder eine grafische Benutzeroberfläche zu nehmen.
Na ja, Windows hat es wegen seiner Monokultur da leichter: Es ist alles ein Win32 oder neuerdings Win64-System, und für das GUI werden die MFC (C++) oder das alte Windows-API (C) verwendet.
Wenn alle Benutzer dasselbe Zielsystem haben, kann der Programmierer leicht das Kompilieren mit übernehmen.
Bei Linux gibt es da die große Vielfalt. Daher muß "configure" erstmal versuchen, ungefähr das Zielsystem zu identifizieren. Nicht so ganz leicht. Vielleicht schreibt der Programmierer auch auf einem anderen Linux als der Benutzer. Der Programmierer hätte dann viel zu testen. Es kann daher nicht immer klappen.

Man kann leider nicht einfach "eine grafische Benutzeroberfläche nehmen": Programme mit einer solchen Oberfläche folgen einem ganz anderen Programmablauf: Z.B. während Berechnungen ablaufen, muß das Programm gleichzeitig immer noch Maus- oder Keyboardeingaben des Benutzers registrieren und verarbeiten. Diese Gleichzeitigkeit erfordert eine ganz andere Struktur als die von Konsolenprogrammen.
Bei Linux ist wiederum das Problem, daß es mehrere verschiedene Toolkits/Bibliotheken für grafische Oberflächen gibt, z.B. Qt, Gtk, Tk; wobei z.B. Qt4 inkompatibel zu Qt3 ist. :(

Wie Du siehst, ist das alles nicht so einfach, und es gibt gute Gründe dafür, daß es so ist. Ich glaube aber nicht, daß wir Dich hier jetzt als "blöden Klickibunti" einstufen. Du bist ja schon recht weit vorgedrungen, und jetzt bemühen wir uns, auch noch den Rest zu erklären. Ist doch nett, oder? ;)
Ich denke, wir sind da schon ganz entspannt, und gerade auch von Geier habe ich (glücklicherweise) in mehreren Jahren (mein Gott, sind das schon 8?) noch nie ein Flame-Posting gelesen. :)
 
Hallo abgdf,

Dich und Geier hatte ich auch nicht gemeint. Aber ich bin noch in anderen Foren und Linuxthemen unterwegs, und da habe ich schon einiges erlebt. Der Windowsuser hat sich jahrzehntelang mit MS-DOS herumgeärgert (was nicht heißt, dass ich Windows 7 toll finde!) und hat sich an GUI gewöhnt. Natürlich ist es befremdlich wieder auf Konsole zu arbeiten. Wenn mir einer das gut und vernünftig erklärt, habe ich auch damit kein Problem. Leider gibt es in der Linux-Szene einige "Gurus" die mit der Konsole verheiratet sind, und jeder der ein Problem hat, und sich fragt, ob das nicht über einen Button einfacher geht, ist halt dumm und faul.

Solche sinnlosen Grabenkämpfe gibt es natürlich auch in allen anderen Lebensbereichen:
"Wieso lernt ihr im Karate Shito-Ryu? Der Shotokan-Stil ist viel cooler!"
"Dimmu Borgir sind kein Black Metal!"
"Alkoholfreies Bier schmeckt nicht!"

Etc. Das nervt einfach nur und ist Energie vergeudet. So jetzt denke ich ist alles geklärt und nichts für ungut ;)
 
A

Anonymous

Gast
Bitte_umsteigen schrieb:
Configure lief durch, wie es aussieht fehlerfrei. Aber wieso meckert make? Das ist der Knackpunkt! Die Fehlermeldungen sind so hilfreich wie "Allgemeiner Flügelfehler" wenn das Flugzeug abstürzt ;)
Ich habe direkt das ganze tar Archiv von der Herstellerseite runtergeladen. Sollte also funzen.

Die configure Datei wird vom der Entwicklerumgebung beim zusammenstellen des Quellpaketes automatisch von Programmen wie "automake & Konsorten" automatisch erstellt. Allerdings werden dort automatisch nicht alle Abhängigkeiten berücksichtigt, der Programmierer muss für bestimmte Abhängigkeiten und Einstellungen eine eigene Konfigurationsdatei für das Erstellen von configure und den Makefile-Vorstufen schreiben in dieser sind dann auch die genauen Fehlermeldungen enthalten, die dann dort kommen sollen. Solche Dateien heißen zB "Makefile.am"
Solche Feinheiten sind in der Regel blutige Handarbeit und der Entwickler geht von seinen Systemen aus, und da kann es schon mal vorkommen das er ein paar Pakte installiert hat die dort eigentlich aufgeführt oder konfiguriert werden müssten, weil sie nicht auf allen Systemen per default vorhanden sind. Solche Fehler schlagen dann erst bei Make beim User auf. Der Entwickler testet zwar auch, aber bemerkt den Fehler nicht immer selbst. Sind also keine Bösartigkeiten sondern der Entwickler hat einfach was bei der Zusammenstellung übersehen.
Sowas korrigieren dann in der Regel die Paketbauer. ;)

Bitte_umsteigen schrieb:
Leider gibt es in der Linux-Szene einige "Gurus" die mit der Konsole verheiratet sind, und jeder der ein Problem hat, und sich fragt, ob das nicht über einen Button einfacher geht, ist halt dumm und faul.
Das hat üüüberhaupt nichts mit Konsole verheiratet oder dumm und faul zu tun. versuche mal jemanden zu erklären wie er der Reihe nach mit der Maus etwas machen soll, wenn theoretisch jeder sich seine eigene Grafische Oberfläche gestalten kann wie er will. Linux ist ein riesiger Baukasten bei dem es für alles 3 und mehr Methoden gibt und jeder sich seine Oberfläche so gestalten könnte wie er will. Da kann ich nicht erklären "diesen Button, dann diesen Reiter, dann dieses Feld und dort einen Haken und dann OK." Andere Betriebssysteme haben es dort etwas leichter, da es die theoretische Vielfalt nicht gibt. Aber Howtos bestehen dort dann auch oftmals aus seitenweise Bildschirmfotos und funktionen oftmals auch schon in der nächsten Betriebssystemgeneration nicht mehr.

Ein einfacher Befehl den der User sich mit der Maus aus dem Internet kopieren kann und in der Konsole ausführen ist da weitaus praktischer und zielgerichteter und funktioniert meistens oder sehr-oft auf (fast) allen Linux Rechnern, unabhängig von der genauen Distribution, Version und Konfiguration bei jedem User. Allerdings muss der User dann aber auch die Bereitschaft mitbringen sich zumindestens sehr grob und oberflächlich etwas mit der Konsole zu beschäftigen, damit er wenigstens dort einen Befehl absetzen kann

Ansonsten wenn hier nichts konstruktives mehr kommt, sollten wir es damit belassen.

robi
 
Oben