how to build statically linked binary
Hi there, I tried to build statically linkd binary fo usbredir, here's my configuration:
diff --git a/meson.build b/meson.build
index aac9909..8c62d05 100644
--- a/meson.build
+++ b/meson.build
@@ -13,6 +13,7 @@ usbredir_include_root_dir = include_directories('.')
cc_flags = [
'--param=ssp-buffer-size=4',
+ '-static',
]
if host_machine.system() != 'windows'
cc_flags += [ '-D_FORTIFY_SOURCE=2' ]
diff --git a/tools/meson.build b/tools/meson.build
index 764fe0a..1938542 100644
--- a/tools/meson.build
+++ b/tools/meson.build
@@ -14,12 +14,12 @@ else
endif
foreach dep, version : deps
- usbredirect_deps += dependency(dep, version : version)
+ usbredirect_deps += dependency(dep, version : version, static: true)
endforeach
executable('usbredirect',
sources : usbredirect_sources,
- c_args : '-Wno-deprecated-declarations',
+ c_args : '-Wno-deprecated-declarations -static',
install : true,
dependencies : usbredirect_deps)
diff --git a/usbredirhost/meson.build b/usbredirhost/meson.build
index 6d110fe..6c6c3aa 100644
--- a/usbredirhost/meson.build
+++ b/usbredirhost/meson.build
@@ -20,12 +20,13 @@ usbredir_host_link_args = compiler.get_supported_link_arguments([
'-Wl,--version-script=@0@'.format(usbredir_host_map_file),
'-Wl,--no-undefined',
'-Wl,-dead_strip',
+ '-static',
])
libusb = 'libusb-1.0'
libusb_version = '>= 1.0.9'
libusb_required_version = '@0@ @1@'.format(libusb, libusb_version)
-libusb = dependency(libusb, version: libusb_version)
+libusb = dependency(libusb, version: libusb_version, static: true)
usbredir_host_include_directories = [
include_directories('.'),
diff --git a/usbredirparser/meson.build b/usbredirparser/meson.build
index 8718817..1c8267f 100644
--- a/usbredirparser/meson.build
+++ b/usbredirparser/meson.build
@@ -31,6 +31,7 @@ usbredir_parser_link_args = compiler.get_supported_link_arguments([
'-Wl,--version-script=@0@'.format(usbredir_parser_map_file),
'-Wl,--no-undefined',
'-Wl,-dead_strip',
+ '-static',
])
usbredir_parser_include_directories = [
build scripts:
meson . _build -Dfuzzing=disabled -Dtools=enabled \
-Dbin_programs=true \
-Dstatic_runtime=true \
-Ddefault_library=static \
-Dzlib=disabled -Dlzma=disabled -Dlz4=disabled
cd _build/
meson compile
bud the output binary was still ynamically linked:
[root@hci01 _build]# file tools/usbredirect
tools/usbredirect: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=7afab625082e3e2a6bebb9470a34bced5748ff3a, for GNU/Linux 3.2.0, with debug_info, not stripped
[root@hci01 _build]#
[root@hci01 _build]#
[root@hci01 _build]# ldd tools/usbredirect
linux-vdso.so.1 (0x00007fff2e9f0000)
libusb-1.0.so.0 => /usr/lib64/libusb-1.0.so.0 (0x00007f5500fd6000)
libffi.so.8 => /usr/lib64/libffi.so.8 (0x00007f5500fca000)
libmount.so.1 => /usr/lib64/libmount.so.1 (0x00007f5500f6a000)
libc.so.6 => /usr/lib64/libc.so.6 (0x00007f5500d69000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5500ffe000)
libudev.so.1 => /usr/lib64/libudev.so.1 (0x00007f5500d3f000)
libblkid.so.1 => /usr/lib64/libblkid.so.1 (0x00007f5500cea000)
libselinux.so.1 => /usr/lib64/libselinux.so.1 (0x00007f5500cbc000)
libpcre2-8.so.0 => /usr/lib64/libpcre2-8.so.0 (0x00007f5500c22000)
so, how to build a complete statically build binary?