<div dir="ltr"><div>Hello. I am trying to make a library that makes use of 'STR' package and link it into my C program.</div><div>I presumed that using :monolithic t flag would result in the static library that contained all systems my library depends on. However it seems that is not the case.</div><div><br></div><div>Here is my .asd file:</div><div><br></div><div>(defsystem "embedded-console"<br>  :description "embedded console - ECL functions for smart snake game"<br>  :author "Ivan Truskov <<a href="mailto:trus19@gmail.com">trus19@gmail.com</a>>"<br>  :components ((:file "embedded-console"))<br>  :depends-on ("str"))<br></div><div><br></div><div>I am compiling the library with command:</div><div><br></div><div>ecl -norc -eval '(require :ecl-quicklisp)'<br>                    -eval '(push \"/my/src/dir/\" asdf:*central-registry*)'<br>                    -eval '(asdf:make-build :embedded-console :type :static-library :move-here \#P\"/my/output/dir}\" :monolithic t )'<br>                    -eval '(quit)'</div><div><br></div><div>However, when i try to link with resulting library, this is what i get:</div><div><br></div><div>... undefined reference to `init_lib_CL_PPCRE'<br>... undefined reference to `init_lib_BASE'<br>... undefined reference to `init_lib_CL_UNICODE'<br>... undefined reference to `init_lib_CL_PPCRE_UNICODE'<br>... undefined reference to `init_lib_CL_CHANGE_CASE'<br>... undefined reference to `init_lib_STR'<br>... undefined reference to `init_lib_EMBEDDED_CONSOLE'</div><div><br></div><div>And indeed, when i run nm over the built file embedded-console--all-systems.a, this is output:</div><div><br></div><div>eclinitVtJU9J.o:<br>0000000000000000 b Cblock.10857<br>                 U cl_boot<br>                 U cl_symbols<br>                 U _ecl_frs_push<br>                 U ecl_init_module<br>                 U ecl_make_codeblock<br>                 U ecl_process_env<br>                 U _GLOBAL_OFFSET_TABLE_<br>                 U init_lib_BASE<br>                 U init_lib_CL_CHANGE_CASE<br>                 U init_lib_CL_PPCRE<br>                 U init_lib_CL_PPCRE_UNICODE<br>                 U init_lib_CL_UNICODE<br>                 U init_lib_EMBEDDED_CONSOLE<br>0000000000000000 T init_lib_EMBEDDED_CONSOLE__ALL_SYSTEMS<br>                 U init_lib_STR<br>0000000000000110 T main_lib_EMBEDDED_CONSOLE__ALL_SYSTEMS<br>                 U _setjmp<br>nm: cl-ppcre.a: File format not recognized<br>nm: base.a: File format not recognized<br>nm: cl-unicode.a: File format not recognized<br>nm: cl-ppcre-unicode.a: File format not recognized<br>nm: cl-change-case.a: File format not recognized<br>nm: str.a: File format not recognized<br>nm: embedded-console.a: File format not recognized</div><div><br></div><div>What am i doing wrong? What should i change to get static library containing all systems i am intending to use (and maybe only them, if possible)?<br></div></div>