Skip to content

hsc2hs puts linker flags before object file, causes linker errors

I'm trying to write a Haskell wrapper for a C library (called unibilium) using hsc2hs. In one of my files I have custom macros that reference functions from the C library (and #include "unibilium.h").

When I run hsc2hs -I.. foo.hsc, I get linker errors for those functions, as expected. However:

% hsc2hs -I.. foo.hsc -L-L.. -L-lunibilium
foo_hsc_make.o: In function `main':
foo_hsc_make.c:(.text+0x1a0): undefined reference to `unibi_name_bool'
foo_hsc_make.c:(.text+0x23b): undefined reference to `unibi_name_bool'
collect2: ld returned 1 exit status
linking foo_hsc_make.o failed
command was: gcc -L.. -lunibilium foo_hsc_make.o -o foo_hsc_make

Same error. This is because hsc2hs calls gcc with the -l option before the filename, at which point there are no unresolved references, so the library is simply discarded.

hsc2hs should leave my linker options where I put them, at the end of the command line.

Trac metadata
Trac field Value
Version 6.10.2
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component hsc2hs
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information