The merged link needs the stubs archive, and must not name a libdl that is gone
This commit is contained in:
parent
a915140f17
commit
a31d89e6bb
@ -2062,6 +2062,13 @@ let compiler_object () =
|
|||||||
"-output-complete-obj";
|
"-output-complete-obj";
|
||||||
"-I"; Filename.quote (Filename.concat lib ".flan.objs/byte");
|
"-I"; Filename.quote (Filename.concat lib ".flan.objs/byte");
|
||||||
"-I"; Filename.quote (Filename.concat lib ".flan.objs/native");
|
"-I"; Filename.quote (Filename.concat lib ".flan.objs/native");
|
||||||
|
(* [lib] again, as a library search path. The macro work gave
|
||||||
|
[lib/dune] a [foreign_stubs] stanza, so [flan.cmxa] now records
|
||||||
|
a dependency on [-lflan_stubs] and the linker has to be told
|
||||||
|
where dune put the archive. Without this the merged object
|
||||||
|
fails with "cannot find -lflan_stubs" and only
|
||||||
|
[--two-process] works. *)
|
||||||
|
"-cclib"; Filename.quote ("-L" ^ lib);
|
||||||
"-o"; Filename.quote tmp;
|
"-o"; Filename.quote tmp;
|
||||||
Filename.quote cmxa; Filename.quote ml ]
|
Filename.quote cmxa; Filename.quote ml ]
|
||||||
in
|
in
|
||||||
|
|||||||
7
lib/dune
7
lib/dune
@ -14,7 +14,12 @@
|
|||||||
(foreign_stubs
|
(foreign_stubs
|
||||||
(language c)
|
(language c)
|
||||||
(names dynload_stubs))
|
(names dynload_stubs))
|
||||||
(c_library_flags (-ldl)))
|
; No (c_library_flags (-ldl)): since glibc 2.34 dlopen lives in libc itself
|
||||||
|
; and libdl is a stub, and naming it breaks the merged build -- the partial
|
||||||
|
; link -output-complete-obj performs cannot resolve -ldl, so `flan dev` in
|
||||||
|
; one process fails at the link with "cannot find -ldl" while the ordinary
|
||||||
|
; build is unaffected. Add it back only with a platform guard.
|
||||||
|
)
|
||||||
|
|
||||||
; The host shim is Flan's, not the user's, so the compiler carries it rather
|
; The host shim is Flan's, not the user's, so the compiler carries it rather
|
||||||
; than looking for it in an install directory. Generated from the real .c files
|
; than looking for it in an install directory. Generated from the real .c files
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user