Pomyślnie utworzyłem kompilator krzyżowy ghc, który pozwala mi skompilować kod haskell dla armv6h (raspberry pi w moim przypadku) z mojego komputera z linux x64. Z powodzeniem przeprowadzam program cześć świata na malinowym.Jak zainstalować zależności podczas krzyżowego kompilowania kodu haskell?
Nie Chcę zbudować mojej prawdziwej aplikacji, która ma wiele zależności od innych modułów haskell. Kiedy skompilować dla x64 po prostu zrobić
cabal install dependenciy1 depenency2 ...
Wiem, że mógłbym zrobić własny programowe klika-projekt zautomatyzować tę czynność. Ale nie o to tutaj chodzi.
Kiedy próbuję użyć krzyżu kompilator
arm-unknown-linux-gnueabi-ghc --make myapp.hs
Opowiada mi o modułach nie mógł znaleźć. Oczywiście nie są one zainstalowane!
czytam https://ghc.haskell.org/trac/ghc/wiki/Building/CrossCompiling i według tego, próbowałem
cabal --with-ghc=arm-unknown-linux-gnueabi-ghc --with-ghc-pkg=arm-unknown-linux-gnueabi-ghc-pkg --with-ld=arm-unknown-linux-gnueabi-ld install random
losowa jest depenency Próbuję zainstalować tutaj. Pojawia się następujący błąd:
Resolving dependencies...
Configuring random-1.0.1.3...
Failed to install random-1.0.1.3
Last 10 lines of the build log (/home/daniel/.cabal/logs/random-1.0.1.3.log):
/home/daniel/.cabal/setup-exe-cache/setup-Cabal-1.18.1.3-arm-linux-ghc-7.8.3.20140804: /home/daniel/.cabal/setup-exe-cache/setup-Cabal-1.18.1.3-arm-linux-ghc-7.8.3.20140804: cannot execute binary file
cabal: Error: some packages failed to install:
random-1.0.1.3 failed during the configure step. The exception was:
ExitFailure 126
Kiedy zrobić
file /home/daniel/.cabal/setup-exe-cache/setup-Cabal-1.18.1.3-arm-linux-ghc-7.8.3.20140804
uzyskać
/home/daniel/.cabal/setup-exe-cache/setup-Cabal-1.18.1.3-arm-linux-ghc-7.8.3.20140804: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 3.10.2, not stripped
Nic więc dziwnego, że nie może go wykonać. Jest skompilowany na ramię.
Czy tu czegoś brakuje? Moim celem jest pobranie wszystkich zależności, a następnie stworzenie statycznie połączonej aplikacji, którą mogę wdrożyć na mojej malince.
można spróbować 'Cabal get random', a następnie cd do katalogu 'random - ???', a następnie 'runhaskell ./Setup.hs install --with-ghc = ... ...'? – bennofs
Kiedy to zrobię, otrzymuję "nierozpoznaną" opcję instalacji \ "--with-ghc = arm-unknown-linux-gnueabi-ghc" nierozpoznana opcja "instalacji" \ '--with-ghc-pkg = arm- unknown-linux-gnueabi-ghc-pkg ' Nierozpoznana opcja' install '\ '--with-ld = arm-unknown-linux-gnueabi-ld'' –
Och, wydaje ci się, że musisz zrobić' runhaskell ./Setup. hs configure --with ... ', następnie' runhaskell ./Setup.hs build' i wreszcie 'runhaskell ./Setup.hs install'. – bennofs