首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译Systemd独立二进制文件时出错

编译Systemd独立二进制文件时出错
EN

Unix & Linux用户
提问于 2022-09-21 19:53:36
回答 1查看 129关注 0票数 2

资料来源:systemd-稳定-251:https://github.com/systemd/systemd-stable

代码语言:javascript
复制
wget https://github.com/systemd/systemd-stable/archive/refs/heads/v251-stable.zip
unzip v251-stable.zip 
cd systemd-stable-251-stable/

使用命令:

代码语言:javascript
复制
./configure --auto-features=disabled \
            --default-library=static \
            -D standalone-binaries=true \
            -D static-libsystemd=true \
            -D static-libudev=true \
            -D link-udev-shared=false \
            -D link-systemctl-shared=false \
            -D link-networkd-shared=false \
            -D link-timesyncd-shared=false \
            -D link-boot-shared=false && make

也尝试了只使用静态库和只启用独立选项。

配置:

代码语言:javascript
复制
  Features
enabled  : IMA, SELinux, SMACK, blkid, gcrypt, gnutls, libidn2, openssl, p11kit, xkbcommon, xz, zlib, bzip2, backlight, binfmt, coredump, environment.d, efi, firstboot, hibernate, hostnamed, hwdb, initrd, kernel-install, localed, logind, machined, networkd, nss-myhostname, nss-mymachines, nss-resolve, nss-systemd, oomd, portabled, pstore, quotacheck, randomseed, resolve, rfkill, sysext, systemd-analyze, sysusers, timedated, timesyncd, tmpfiles, userdb, vconsole, xdg-autostart, idn, polkit, nscd, dbus, glib, tpm, SysV compat, utmp, ldconfig, adm group, wheel group, gshadow, standalone-binaries, static-libsystemd(true), static-libudev(true), cryptolib(gcrypt), DNS-over-TLS(openssl)
disabled : ACL, AUDIT, AppArmor, PAM, SECCOMP, elfutils, libbpf, libcryptsetup, libcryptsetup-plugins, libcurl, libfdisk, libfido2, libidn, libiptc, microhttpd, pcre2, pwquality, qrencode, tpm2, zstd, lz4, bpf-framework, gnu-efi, homed, importd, repart, sysupdate, legacy-pkla, kmod, man pages, html pages, man page indices, compat-mutable-uid-boundaries, debug hashmap, debug mmap cache, debug siphash, valgrind, trace logging, install tests, link-udev-shared, link-systemctl-shared, link-networkd-shared, link-timesyncd-shared, link-boot-shared, fexecve, coverage

用户定义选项auto_features :禁用default_library :静态链接-引导-共享:假链接-networkd-共享:假链接-systemctl-共享: false链接-timesyncd共享: false链接-udev-default_library: false静态-libsystemd: true static : true static: true static:true static:true default_library

共享对象:

代码语言:javascript
复制
# file build/udevadm
build/udevadm: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=f6b7c1a3509d45ebcafda9b49f4dd2332e786738, with debug_info, not stripped

我希望看到一个ELF可执行文件,而不是共享的对象文件。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-09-21 21:17:15

standalone-binaries选项的文档显示:

还构建了支持的二进制文件的独立版本。

这似乎充其量是模棱两可。查看meson_build文件,我们发现:

代码语言:javascript
复制
        if have_standalone_binaries
                exe = executable(
                        'systemd-sysusers.standalone',

[...]

        if have_standalone_binaries
                exe = executable(
                        'systemd-tmpfiles.standalone',

[...]

这似乎表明,该选项只影响systemd-sysuserssystemd-tmpfiles,实际上,当构建完成时,我们看到:

代码语言:javascript
复制
$ ls build/*.standalone
build/systemd-sysusers.standalone build/systemd-tmpfiles.standalone

看上去一切都是按设计进行的。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/718163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档