1 2 | nächste Seite |
Gepostet: |
Hilfe bei cabal , windows | ||||||||||
Hallo, ich versuche verzweifelt schon 2 Tage dieses Programm in WinXP zu übersetzen.http://repo.or.cz/w/kaos.git Leider meldet sich bdonlan schon seit einiger Zeit nicht mehr. Wurde mit ghc vers. 6.8.3 geschrieben. In Ubuntu kein Problem da 6.8.3 verwendet wird.NUR bei Win habe ich Probleme!! Nach runhaskell Setup.lhs build bekomme ich : dist\build\kaos\kaos-tmp/Main.o(.text+0x11f): In function `r2tPn_info': : undefined reference to `stg_CAF_BLACKHOLE_info' ca. 1000 mal. Unter 6.10.3 muss in kaos.kabal noch syb in 'Build-Depends:' doch dann bekomme ich einen Fehler in file 16 ASTToCore.hs , irgendwas mit Maybe.... Nochmal In Linux läuft alles glatt und nach der Installation kann ich kaos verwenden. Ich tippe das mit 6.8.3 irgend eine path-variable falsch ist , aber ich weiß nicht welche!! Ver.6.10.3 hat anscheinend einige Änderungen im Syntax? Grüße newuser0815 PS . Und auch unter wine erhalte ich die selben Ergebnisse. hello.hs oder auch mtl.hs werden ohne zu klagen kompiliert, also ist ghc ordentlich Installiert. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hallo, wird dir jetzt nicht allzuviel helfen, aber bei mir kompiliert er das ohne Probleme (unter WinXP, GHC 6.8.1). Dem GHC sollte eigentlich ein Eintrag im PATH zum bin-Ordner im GHC reichen. Bei einem Linker-Fehler würde ich darauf tippen, er findet seine GHC-Object-Dateien nicht. Sicher dass deine GHC-Installation noch vollständig in Ordnung ist? Vielleicht nochmal eine frisch heruntergeladene Version parallel installieren. Das Projekt ist schon etwas älter, also gut möglich, dass es im GHC 6.10.x nicht mehr funktioniert, da wurden einige Standard-Bibliotheken gründlich umgearbeitet. Oder vielleicht eine triviale Lösung, mal runhaskell clean versucht? Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
Herzlichen Dank | ||||||||||
Vielen Herzlichen Dank! Ich Hirsch. Im Ordner waren noch Reste vom Linux-'configure', ; nach runhaskell Setup.lhs clean und dann von Anfang , ging alles glatt. Darum mische nie Linux und Win. Kommt nur Käse raus. Noch mal ein herzliches vergelt´s Gott. "Das Projekt ist schon etwas älter, also gut möglich, dass es im GHC 6.10.x nicht mehr funktioniert, da wurden einige Standard-Bibliotheken gründlich umgearbeitet" Neuschreiben?? Gibt es eine Übersicht was man wie umschreibt??(Na solange es mit 6.8.3 geht...) Danke newuse0815 PS:Bin kräftig am haskell lernen. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Die Änderungen findest du hier: http://haskell.org/ghc/docs/6.10.1/html/users_guide/release-6-10-1.html#id2566405. Waren dann doch nicht so große Umarbeitungen, eher mehrere kleine. ^^ Dein Fehler mit dem Maybe ist wird vermutlich auf die Änderungen an den Container-Klassen zurückzuführen sein. Da am besten direkt in der Libraries-Doku nachschauen: http://www.haskell.org/ghc/docs/6.10.1/html/libraries/index.html Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hallo, Wenn ich version 6.10.3 verwende, dann schreibe ich in kaos.cabal : Build-Depends: base <4 , (base-3.0.3.1 ) ; Warum kann ich nicht container<0.2.0.0 verwenden?? Danke newuser0815 |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hi nochmal, also ich kenn mich mit der package-Verwaltung vom GHC nicht so detailliert aus, aber theoretisch sollte das gehen. Wenn du den "alten" Quellcode mit dem GHC 6.10.3 kompilieren willst, dann logischerweise auch mit den alten Packages. Bei container solltest du alte und neue Version parallel installieren können und dann die entsprechende beim Kompilieren auswählen. Ob zwei base-Packages mit dem gleichen Compiler verwendet werden können, da bin ich mir nicht sicher. Welchen Fehler bekommst du denn? Zur Package-Verwaltung gibt's hier übrigens Doku: http://haskell.org/ghc/docs/6.10.1/html/users_guide/packages.html. Interessant vermutlich der Teil zu ghc-pkg. Einfacher wäre allemal den GHC 6.8.3 zusätzlich zu installieren und mit dem zu kompilieren. ;-) Viele Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
Danke , noch eine Frage | ||||||||||
Herzlichen Dank für die Antwort, "Einfacher wäre allemal den GHC 6.8.3 zusätzlich zu installieren und mit dem zu kompilieren. ;-)" Auf jeden Fall für den Moment! Noch eine "Imperative Frage":(bezogen auf das kaos-Programm) Es wird Zeile eingelesen und bei allen CString wird im Output-file "HALLO" erzeugt, auch bei "[1]" welches aber korrekt nur [1] lauten soll Mein Gedanke war bei der Ausgabe in Emit.hs einfach eine Fallunterscheidung einzubauen etwa: orginal : emitConst (CString s) =s mein Vorschlag emitConst (CString s) | (s)!!1=="[" = tag (init (s)) | otherwise = s ODER eine if then else constuction; nur da bekomme ich Fehler wegen Vergleich Char mit [Char] Ich glaube es liegt noch irgendwie beim "C" Denken... Danke newuser0815 PS wäre es möglich , wenn in einem Text das Schlüsselword "#include" erscheint , dann den nachfolgenden String als eine Datei in die vorhandene einzufügen. Mit awk kein Problem(nur mit Win etwas schwerer) for i in `awk '/#include/ { print $2 }' $1` do echo $i included cat $i >>$TMP Dies würde dann wahrscheinlich als neues Modul hinzugefügt werden müssen. |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hi, die Antwort auf den Ersten Teil hab ich ,glaube ich selber, gefunden: (zumindest ist das Ergebnis korrekt! in 'output.cos') emitConst (CString s) = if (s)!!1=='[' then tail (init(s)) else s Am Zweiten (include) bin ich noch dran , Tipps willkommen. Gruß newuser0815 |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hi, > if (s)!!1=='[' then tail (init(s)) else s Ist denn sichergestellt, das s immer mindestens zwei Zeichen enthält? Sonst gibt's beim !!1 u.U. einen Laufzeitfehler. > wäre es möglich , wenn in einem Text das Schlüsselword "#include" erscheint , dann den nachfolgenden String als eine Datei in die vorhandene einzufügen. Ja, durchaus möglich. Willst du denn direkt in die Datei schreiben (als eine Art Preprocessing), oder nur den Input-String beim Parsen verändern? Im ersten Fall könnte man die Source-Datei zeilenweise durchgehen und die aktuelle Zeile in eine zweite Datei schreiben. Dabei mit Text.Regex.matchRegex immer prüfen, ob ein include vorliegt, und falls ja, die Zieldatei lesen und diese in die zweite Datei schreiben. Passende Funktionen für den Umgang mit Dateien findest du in System.IO. Für Fall zwei einfach ein Text.Regex.subRegex auf dem Eingabestring machen. Oder direkt im Syntaxbaum ersetzen, falls das in dem Programm funktioniert. Vielel Grüße, Siracusa |
|||||||||||
Zum Seitenanfang | |||||||||||
Gepostet: |
|||||||||||
Hallo, >Ist denn sichergestellt, das s immer mindestens zwei Zeichen enthält? Sonst gibt's beim !!1 u.U. einen Laufzeitfehler. Hm, richtig aber dann ist es auch in der zu kompilierenden Datei ein Fehler, da die Funktion so aus sehen muß! : ....newbutton(3, "ds gui", 14, 77, 331, 0, 0 ,"[]", 2000, 1); oder ....newbutton(3, "ds gui", 14, 77, 331, 0, 0 ,"[3]", 2000, 1); >(als eine Art Preprocessing) So etwas habe ich im Sinn; Preprocess(Orginaldatei) => temp , welche dann im eigentlichen Kompiler bearbeitet wird. Habe die gefunden:http://www.haskell.org/haskellwiki/Haskell_IO_for_Imperative_Programmers unter 5 readWithIncludes :: String -> IO [String] readWithIncludes f = do s <- readFile f ss <- mapM expandIncludes (lines s) return (concat ss) expandIncludes :: String -> IO [String] expandIncludes s = if isInclude s -- kann ich 'isInclude' mit "#include" ersetzen ?? then readWithIncludes (includeFile s) else return [s] Bin noch am probieren, Gruß newuser0815 |
|||||||||||
Zum Seitenanfang | |||||||||||
1 2 | nächste Seite |