From 4f4dbee4c3e481bc152dcdbc51b2ff3504140707 Mon Sep 17 00:00:00 2001 From: Kevin Day Date: Wed, 7 May 2025 23:52:33 -0500 Subject: [PATCH] Workaround: The compiler and linker fail to understand that compiling statically should also link statically. This is a logic or design flaw that is just plain idiotic. When compiling statically (passing `-static`), there cannot be any shared/dynamic linked data. Rather than recognizing this, if there is a shared library during a static build then the shared library is linked to. The compiler and linker, at least, supports explicitly forcing the point that a static library is to be linked. This is done via `-l:libc.a` for libc linking rather than `-lc`. This should not be necessary, but it unfortunately is. --- data/build/settings | 25 +++++++++++++++++-------- data/build/settings.controller | 25 +++++++++++++++++-------- data/build/settings.init | 25 +++++++++++++++++-------- 3 files changed, 51 insertions(+), 24 deletions(-) diff --git a/data/build/settings b/data/build/settings index 12bd7b1..fc94f7b 100644 --- a/data/build/settings +++ b/data/build/settings @@ -33,14 +33,23 @@ build_indexer ar build_indexer_arguments rcs build_language c -build_libraries -lc -lcap -build_libraries-individual -lfll_control_group -lfll_error -lfll_execute -lfll_fss -lfll_print -lfll_program -build_libraries-individual_thread -lf_thread -build_libraries-individual -lfl_control_group -lfl_conversion -lfl_directory -lfl_environment -lfl_execute -lfl_fss -lfl_iki -lfl_path -lfl_print -build_libraries-individual -lf_abstruse -lf_account -lf_capability -lf_color -lf_compare -lf_console -lf_control_group -lf_conversion -lf_directory -lf_environment -lf_execute -lf_file -lf_fss -lf_iki -lf_limit -lf_memory -lf_parse -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_socket -lf_string -lf_time -lf_type_array -lf_utf -build_libraries-individual_thread -lf_thread -build_libraries-level -lfll_2 -lfll_1 -lfll_0 -build_libraries-monolithic -lfll +build_libraries_shared -lc -lcap +build_libraries_shared-individual -lfll_control_group -lfll_error -lfll_execute -lfll_fss -lfll_print -lfll_program +build_libraries_shared-individual_thread -lf_thread +build_libraries_shared-individual -lfl_control_group -lfl_conversion -lfl_directory -lfl_environment -lfl_execute -lfl_fss -lfl_iki -lfl_path -lfl_print +build_libraries_shared-individual -lf_abstruse -lf_account -lf_capability -lf_color -lf_compare -lf_console -lf_control_group -lf_conversion -lf_directory -lf_environment -lf_execute -lf_file -lf_fss -lf_iki -lf_limit -lf_memory -lf_parse -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_socket -lf_string -lf_time -lf_type_array -lf_utf +build_libraries_shared-individual_thread -lf_thread +build_libraries_shared-level -lfll_2 -lfll_1 -lfll_0 +build_libraries_shared-monolithic -lfll + +build_libraries_static -l:libc.a -l:libcap.a +build_libraries_static-individual -l:libfll_control_group.a -l:libfll_error.a -l:libfll_execute.a -l:libfll_fss.a -l:libfll_print.a -l:libfll_program.a +build_libraries_static-individual_thread -l:libf_thread.a +build_libraries_static-individual -l:libfl_control_group.a -l:libfl_conversion.a -l:libfl_directory.a -l:libfl_environment.a -l:libfl_execute.a -l:libfl_fss.a -l:libfl_iki.a -l:libfl_path.a -l:libfl_print.a +build_libraries_static-individual -l:libf_abstruse.a -l:libf_account.a -l:libf_capability.a -l:libf_color.a -l:libf_compare.a -l:libf_console.a -l:libf_control_group.a -l:libf_conversion.a -l:libf_directory.a -l:libf_environment.a -l:libf_execute.a -l:libf_file.a -l:libf_fss.a -l:libf_iki.a -l:libf_limit.a -l:libf_memory.a -l:libf_parse.a -l:libf_path.a -l:libf_pipe.a -l:libf_print.a -l:libf_rip.a -l:libf_signal.a -l:libf_socket.a -l:libf_string.a -l:libf_time.a -l:libf_type_array.a -l:libf_utf.a +build_libraries_static-individual_thread -l:libf_thread.a +build_libraries_static-level -l:libfll_2.a -l:libfll_1.a -l:libfll_0.a +build_libraries_static-monolithic -l:libfll.a build_sources_library common.c common/define.c common/enumeration.c common/print.c common/string.c common/type.c build_sources_library common/type/cache.c common/type/control.c common/type/entry.c common/type/execute.c common/type/instance.c common/type/interrupt.c common/type/lock.c common/type/process.c common/type/rule.c common/type/thread.c diff --git a/data/build/settings.controller b/data/build/settings.controller index 46bd75a..4b52fe7 100644 --- a/data/build/settings.controller +++ b/data/build/settings.controller @@ -33,14 +33,23 @@ build_indexer ar build_indexer_arguments rcs build_language c -build_libraries -lc -lcap -lcontroller -build_libraries-individual -lfll_control_group -lfll_error -lfll_execute -lfll_fss -lfll_print -lfll_program -build_libraries-individual_thread -lf_thread -build_libraries-individual -lfl_control_group -lfl_conversion -lfl_directory -lfl_environment -lfl_execute -lfl_fss -lfl_iki -lfl_path -lfl_print -build_libraries-individual -lf_abstruse -lf_account -lf_capability -lf_color -lf_compare -lf_console -lf_control_group -lf_conversion -lf_directory -lf_environment -lf_execute -lf_file -lf_fss -lf_iki -lf_limit -lf_memory -lf_parse -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_socket -lf_string -lf_time -lf_type_array -lf_utf -build_libraries-individual_thread -lf_thread -build_libraries-level -lfll_2 -lfll_1 -lfll_0 -build_libraries-monolithic -lfll +build_libraries_shared -lc -lcap -lcontroller +build_libraries_shared-individual -lfll_control_group -lfll_error -lfll_execute -lfll_fss -lfll_print -lfll_program +build_libraries_shared-individual_thread -lf_thread +build_libraries_shared-individual -lfl_control_group -lfl_conversion -lfl_directory -lfl_environment -lfl_execute -lfl_fss -lfl_iki -lfl_path -lfl_print +build_libraries_shared-individual -lf_abstruse -lf_account -lf_capability -lf_color -lf_compare -lf_console -lf_control_group -lf_conversion -lf_directory -lf_environment -lf_execute -lf_file -lf_fss -lf_iki -lf_limit -lf_memory -lf_parse -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_socket -lf_string -lf_time -lf_type_array -lf_utf +build_libraries_shared-individual_thread -lf_thread +build_libraries_shared-level -lfll_2 -lfll_1 -lfll_0 +build_libraries_shared-monolithic -lfll + +build_libraries_static -l:libc.a -l:libcap.a -l:libcontroller.a +build_libraries_static-individual -l:libfll_control_group.a -l:libfll_error.a -l:libfll_execute.a -l:libfll_fss.a -l:libfll_print.a -l:libfll_program.a +build_libraries_static-individual_thread -l:libf_thread.a +build_libraries_static-individual -l:libfl_control_group.a -l:libfl_conversion.a -l:libfl_directory.a -l:libfl_environment.a -l:libfl_execute.a -l:libfl_fss.a -l:libfl_iki.a -l:libfl_path.a -l:libfl_print.a +build_libraries_static-individual -l:libf_abstruse.a -l:libf_account.a -l:libf_capability.a -l:libf_color.a -l:libf_compare.a -l:libf_console.a -l:libf_control_group.a -l:libf_conversion.a -l:libf_directory.a -l:libf_environment.a -l:libf_execute.a -l:libf_file.a -l:libf_fss.a -l:libf_iki.a -l:libf_limit.a -l:libf_memory.a -l:libf_parse.a -l:libf_path.a -l:libf_pipe.a -l:libf_print.a -l:libf_rip.a -l:libf_signal.a -l:libf_socket.a -l:libf_string.a -l:libf_time.a -l:libf_type_array.a -l:libf_utf.a +build_libraries_static-individual_thread -l:libf_thread.a +build_libraries_static-level -l:libfll_2.a -l:libfll_1.a -l:libfll_0.a +build_libraries_static-monolithic -l:libfll.a build_sources_program config.c main.c controller.c string.c diff --git a/data/build/settings.init b/data/build/settings.init index 33fd4d7..c4085bc 100644 --- a/data/build/settings.init +++ b/data/build/settings.init @@ -33,14 +33,23 @@ build_indexer ar build_indexer_arguments rcs build_language c -build_libraries -lc -lcap -lcontroller -build_libraries-individual -lfll_control_group -lfll_error -lfll_execute -lfll_fss -lfll_print -lfll_program -build_libraries-individual_thread -lf_thread -build_libraries-individual -lfl_control_group -lfl_conversion -lfl_directory -lfl_environment -lfl_execute -lfl_fss -lfl_iki -lfl_path -lfl_print -build_libraries-individual -lf_abstruse -lf_account -lf_capability -lf_color -lf_compare -lf_console -lf_control_group -lf_conversion -lf_directory -lf_environment -lf_execute -lf_file -lf_fss -lf_iki -lf_limit -lf_memory -lf_parse -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_socket -lf_string -lf_time -lf_type_array -lf_utf -build_libraries-individual_thread -lf_thread -build_libraries-level -lfll_2 -lfll_1 -lfll_0 -build_libraries-monolithic -lfll +build_libraries_shared -lc -lcap -lcontroller +build_libraries_shared-individual -lfll_control_group -lfll_error -lfll_execute -lfll_fss -lfll_print -lfll_program +build_libraries_shared-individual_thread -lf_thread +build_libraries_shared-individual -lfl_control_group -lfl_conversion -lfl_directory -lfl_environment -lfl_execute -lfl_fss -lfl_iki -lfl_path -lfl_print +build_libraries_shared-individual -lf_abstruse -lf_account -lf_capability -lf_color -lf_compare -lf_console -lf_control_group -lf_conversion -lf_directory -lf_environment -lf_execute -lf_file -lf_fss -lf_iki -lf_limit -lf_memory -lf_parse -lf_path -lf_pipe -lf_print -lf_rip -lf_signal -lf_socket -lf_string -lf_time -lf_type_array -lf_utf +build_libraries_shared-individual_thread -lf_thread +build_libraries_shared-level -lfll_2 -lfll_1 -lfll_0 +build_libraries_shared-monolithic -lfll + +build_libraries_static -l:libc.a -l:libcap.a -l:libcontroller.a +build_libraries_static-individual -l:libfll_control_group.a -l:libfll_error.a -l:libfll_execute.a -l:libfll_fss.a -l:libfll_print.a -l:libfll_program.a +build_libraries_static-individual_thread -l:libf_thread.a +build_libraries_static-individual -l:libfl_control_group.a -l:libfl_conversion.a -l:libfl_directory.a -l:libfl_environment.a -l:libfl_execute.a -l:libfl_fss.a -l:libfl_iki.a -l:libfl_path.a -l:libfl_print.a +build_libraries_static-individual -l:libf_abstruse.a -l:libf_account.a -l:libf_capability.a -l:libf_color.a -l:libf_compare.a -l:libf_console.a -l:libf_control_group.a -l:libf_conversion.a -l:libf_directory.a -l:libf_environment.a -l:libf_execute.a -l:libf_file.a -l:libf_fss.a -l:libf_iki.a -l:libf_limit.a -l:libf_memory.a -l:libf_parse.a -l:libf_path.a -l:libf_pipe.a -l:libf_print.a -l:libf_rip.a -l:libf_signal.a -l:libf_socket.a -l:libf_string.a -l:libf_time.a -l:libf_type_array.a -l:libf_utf.a +build_libraries_static-individual_thread -l:libf_thread.a +build_libraries_static-level -l:libfll_2.a -l:libfll_1.a -l:libfll_0.a +build_libraries_static-monolithic -l:libfll.a build_sources_program config.c main.c init.c string.c -- 1.8.3.1