Je travaille sur un programme Haskell qui est lié à un ancien code C++. J'ai créé une interface C et l'ai fait fonctionner avec ghc seulement. Maintenant, j'ai essayé de convertir le Makefile utilisé dans un projet Cabal et maintenant cabale sur la dernière étape sélectionne le mauvais éditeur de liens.Cabal sélectionne un mauvais éditeur de liens
En raison de certaines dépendances, je dois utiliser un bon vieux GHC et gcc. Alors ce que je fais appelle cabale comme celui-ci (1.24.0.0.):
cabal install --with-ghc=ghc-7.6.3 --with-gcc=/opt/gcc-3.3.6/bin/gcc --with-ld=/opt/gcc-3.3.6/bin/gcc
Pour configurer compile- et intermédiaire reliant tout est ok, avec -v3
je reçois les lignes suivantes:
Using gcc version 3.3.6 given by user at: /opt/gcc-3.3.6/bin/gcc
Using ghc version 7.6.3 given by user at: /home/oswald/ghcs/bin/ghc-7.6.3
...
Using ld given by user at: /opt/gcc-3.3.6/bin/gcc
Tout fonctionne bien jusqu'à ce que l'étape de liaison finale:
Linking dist/dist-sandbox-c45ed4c7/build/MISCconfig/MISCconfig ...
*** C Compiler:
'/opt/gcc-3.3.6/bin/gcc' '-c' '/tmp/ghc28340_0/ghc28340_0.c' '-o' ...
*** C Compiler:
'/opt/gcc-3.3.6/bin/gcc' '-c' '/tmp/ghc28340_0/ghc28340_0.s' '-o' ...
*** Linker:
'/usr/bin/gcc' '-fno-stack-protector' '-Wl,--hash-size=31' '-W
Ainsi, la dernière ligne spécifie /usr/bin/gcc
que l'éditeur de liens, qui est le système un et donc je reçois des erreurs de lien wHER e il devrait être /opt/gcc-3.3.6/bin/gcc
(doit utiliser un gcc pré-3.4.0 en raison de la compatibilité des liens pour l'une des bibliothèques C++ utilisées et gcc 3.3.6 est le dernier avec l'ancien ABI).
Alors qu'est-ce que je fais mal? Cabal dit qu'il sélectionne l'éditeur de liens de l'ancien gcc mais utilise en fait le plus récent du système?
Lorsque je viens d'utiliser GHC avec le -pgmc /opt/gcc-3.3.6/bin/gcc
commutateur dans un makefile tous les travaux, mais je préférerais obtenir un bac à sable ... cabale travailler
Le '*** compilateur C:.' et sortie suivante provient de GHC. Comment la cabale invoque-t-elle ghc? –
(Si vous venez de lancer 'cabal build -v', la dernière ligne vous le dira.) –
Ceci est la sortie: [lien gist] (https://gist.github.com/anonymous/41dd5f00401ce897e5cc7f190bc276ae) – MichaelO