В GNU / Linux Debian 9.9 (растяжка) моя программа сообщается как:
build/debug/program_g: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=be082fb3..., not stripped
build/debug/stripped_program_g: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=be082fb3..., stripped
build/release/program: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=6477469..., stripped
build/release/program_not_stripped: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=6477469..., not stripped
Компилятор G CC (ванильный дистрибутив, т.е. gcc (Debian 6.3.0-18+deb9u1) 6.3.0 2017051
), флаги для "release" :
-ansi -pedantic -Wall -Wextra -Werror -Wunused-result -Wmissing-include-dirs
-Wparentheses -std=c89 -DPROGRAM_USE_STD_C89 -O2 -DNDEBUG
Для «отладки»:
-ansi -pedantic -Wall -Wextra -Werror -Wunused-result -Wmissing-include-dirs
-Wparentheses -std=c89 -DPROGRAM_USE_STD_C89 -O0 -g -fprofile-arcs -ftest-coverage -DTRACE_U0 -DTRACE_U1 -no-pie
Вопрос, почему для «выпуска» исполняемый файл указывается как shared object
вместо executable
?