当前位置: 首页 > news >正文

libvirt零知识学习5 —— libvirt源码编译安装(3)

接前一篇文章libvirt零知识学习4 —— libvirt源码编译安装(2)

在上篇文章及上上篇文章中构建libvirt的时候遇到了一个问题“ERROR: Problem encountered: YAJL 2 is required to build QEMU driver”。上篇文章讲到即使安装了相应的YAJL库仍然不能解决问题,本篇文章就来继续对此问题进行深入分析和解决。

首先,笔者尝试了网上提到的一些方法,比如libvirt编译运行问题总结_mltrees的博客-CSDN博客

中提到的以下解决方法,但是仍然无效。

echo "/usr/local/lib" | sudo tee /etc/ld.so.conf.d/libyajl.conf
sudo ldconfig

没有更好的办法,只能抠一下源码,仔细分析查找问题到底出在了哪里。

根据构建信息中给出的相关提示:

Run-time dependency readline found: YES 8.1
Run-time dependency libsanlock_client found: NO (tried pkgconfig and cmake)
Run-time dependency libsasl2 found: NO (tried pkgconfig and cmake)
Run-time dependency libselinux found: NO (tried pkgconfig and cmake)
Run-time dependency threads found: YES
Run-time dependency libudev found: YES 251
Library util found: YES
Run-time dependency wireshark found: NO (tried pkgconfig and cmake)
Run-time dependency yajl found: NO (tried pkgconfig and cmake)
Program pkcheck found: YES (/usr/bin/pkcheck)
Run-time dependency xenlight found: NO (tried pkgconfig and cmake)
Checking if "lxc support" compiles: YES meson.build:1625:6: ERROR: Problem encountered: YAJL 2 is required to build QEMU driverA full log can be found at /home/penghao/libvirt/libvirt-8.10.0/build/meson-logs/meson-log.txt

可以看到错误的具体位置在meson.build文件的1625行,上下文如下:

yail_dep相关代码也在meson.build中,如下:

yajl_version = '2.0.3'
yajl_dep = dependency('yajl', version: '>=' + yajl_version, required: get_option('yajl'))
if yajl_dep.found()# Kludge for yajl include path on non-Linux## As of 2.1.0, upstream yajl.pc has -I${includedir}/yajl among# its Cflags, which is clearly wrong. This does not affect Linux# because ${includedir} is already part of the default include path,# but on other platforms that's not the case and the result is that# <yajl/yajl.h> can't be located, causing the build to fail.## Since upstream development for yajl has stopped years ago, there's# little hope of this issue getting fixed by a new upstream release.# Some non-Linux operating systems such as FreeBSD have elected to# carry a small downstream patch, but in the case of Homebrew on# macOS this approach has been rejected[1] and so we're left with no# choice but to work around the issue ourselves.## [1] https://github.com/Homebrew/homebrew-core/pull/74516if host_machine.system() != 'linux'yajl_includedir = yajl_dep.get_variable(pkgconfig : 'includedir')if yajl_includedir.contains('include/yajl')rc = run_command('python3', '-c','print("@0@".replace("@1@", "@2@"))'.format(yajl_includedir, 'include/yajl', 'include',),check: true,)yajl_includedir = rc.stdout().strip()yajl_dep = declare_dependency(compile_args: [ '-I' + yajl_includedir ],dependencies: [ yajl_dep ],)endifendifconf.set('WITH_YAJL', 1)
endif

参考Reference manual中的Functions:

dependency()

Finds an external dependency (usually a library installed on your system) with the given name with pkg-config and with CMake if pkg-config fails. Additionally, frameworks (OSX only) and library-specific fallback detection logic are also supported.

Since 0.60.0 more than one name can be provided, they will be tried in order and the first name to be found will be used. The fallback subproject will be used only if none of the names are found on the system. Once one of the name has been found, all other names are added into the cache so subsequent calls for any of those name will return the same value. This is useful in case a dependency could have different names, such as png and libpng.

  • Since 0.64.0 a dependency fallback can be provided by WrapDB. Simply download the database locally using meson wrap update-db command and Meson will automatically fallback to subprojects provided by WrapDB if the dependency is not found on the system and the project does not ship their own .wrap file.

Dependencies can also be resolved in two other ways:

  • if the same name was used in a meson.override_dependency prior to the call to dependency, the overriding dependency will be returned unconditionally; that is, the overriding dependency will be used independent of whether an external dependency is installed in the system. Typically, meson.override_dependency will have been used by a subproject.

  • by a fallback subproject which, if needed, will be brought into the current build specification as if subproject() had been called. The subproject can be specified with the fallback argument. Alternatively, if the fallback argument is absent, since 0.55.0 Meson can automatically identify a subproject as a fallback if a wrap file provides the dependency, or if a subproject has the same name as the dependency. In the latter case, the subproject must use meson.override_dependency to specify the replacement, or Meson will report a hard error. See the Wrap documentation for more details. This automatic search can be controlled using the allow_fallback keyword argument.

If dependency_name is '', the dependency is always not found. So with required: false, this always returns a dependency object for which the found() method returns false, and which can be passed like any other dependency to the dependencies: keyword argument of a build_target. This can be used to implement a dependency which is sometimes not required e.g. in some branches of a conditional, or with a fallback: kwarg, can be used to declare an optional dependency that only looks in the specified subproject, and only if that's allowed by --wrap-mode.

The returned object dep also has additional methods.

简单地说就是添加依赖。

参考以下博客:

meson和pkg-config-CSDN博客

其中提到了已经安装了相应的包但仍然提示找不到的情况,与我们遇到的很相似。

首先,使用pkg-config命令查看是否有YAJL包:

$ pkg-config --list-all | grep -i "yajl"
$

可见,系统中查不到YAJL包。

然后,用以下代码查看pkg-config执行时搜索的文件:

$ pkg-config --variable pc_path pkg-config
/usr/lib/pkgconfig:/usr/share/pkgconfig

在这些目录下添加自己编写的针对于YAJL包的pc文件即可。

在/usr/lib/pkgconfig/下创建YAJL.pc文件,并输入以下内容并保存退出:

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
sharedlibdir=${libdir}
includedir=${prefix}/includeName: YAML
Description: Yet Another Jason Library
Version: 2.1.0Requires:
Libs: -L${libdir} -L${sharedlibdir} -lz
Cflags: -I${includedir}

再次执行以下命令就可以看到YAJL了:

$ pkg-config --list-all | grep -i "yajl"
YAJL                                YAJL - Yet Another Jason Library

再次执行meson build命令,命令及结果如下所示:

……
Run-time dependency readline found: YES 8.1
Run-time dependency libsanlock_client found: NO (tried pkgconfig and cmake)
Run-time dependency libsasl2 found: NO (tried pkgconfig and cmake)
Run-time dependency libselinux found: NO (tried pkgconfig and cmake)
Run-time dependency threads found: YES
Run-time dependency libudev found: YES 251
Library util found: YES
Run-time dependency wireshark found: NO (tried pkgconfig and cmake)
Run-time dependency yajl found: NO (tried pkgconfig and cmake)
Program pkcheck found: YES (/usr/bin/pkcheck)
Run-time dependency xenlight found: NO (tried pkgconfig and cmake)
Checking if "lxc support" compiles: YES meson.build:1625:6: ERROR: Problem encountered: YAJL 2 is required to build QEMU driverA full log can be found at /home/penghao/libvirt/libvirt-8.10.0/build/meson-logs/meson-log.txt

还是同样的问题!为什么?难道一开始方向就错了?

凭借多年的经验,这次方向是正确的,应该是有一些小地方导致问题依旧。仔细想想可能是哪里的问题,最有可能的地方就是YAML.pc这个文件的名字。于是将YAJL.pc改为yajl.pc,命令如下:

$ sudo mv /usr/lib/pkgconfig/YAJL.pc /usr/lib/pkgconfig/yajl.pc

再次执行以下命令,可以看到YAJL变为jajl了:

$ pkg-config --list-all | grep -i "yajl"
yajl                                YAJL - Yet Another Jason Library

此时再次执行meson build命令,命令及结果如下所示:

$ meson build -Dsystem=true -Ddriver_qemu=enabled
The Meson build system
Version: 0.62.2
Source dir: /home/penghao/libvirt/libvirt-8.10.0
Build dir: /home/penghao/libvirt/libvirt-8.10.0/build
Build type: native build
Project name: libvirt
Project version: 8.10.0
C compiler for the host machine: cc (gcc 12.1.0 "cc (GCC) 12.1.0")
C linker for the host machine: cc ld.bfd 2.38
Host machine cpu family: x86_64
Host machine cpu: x86_64
Configuring configmake.h using configuration
Checking for size of "ptrdiff_t" : 8
Checking for size of "size_t" : 8
Compiler for C supports arguments -fasynchronous-unwind-tables: YES 
Compiler for C supports arguments -fexceptions: YES 
Compiler for C supports arguments -fipa-pure-const: YES 
Compiler for C supports arguments -fno-common: YES 
Compiler for C supports arguments -Wabsolute-value: YES 
Compiler for C supports arguments -Waddress: YES 
Compiler for C supports arguments -Waddress-of-packed-member: YES 
Compiler for C supports arguments -Waggressive-loop-optimizations: YES 
Compiler for C supports arguments -Walloc-size-larger-than=9223372036854775807: YES 
Compiler for C supports arguments -Walloca: YES 
Compiler for C supports arguments -Warray-bounds=2: YES 
Compiler for C supports arguments -Wattribute-alias=2: YES 
Compiler for C supports arguments -Wattribute-warning: YES 
Compiler for C supports arguments -Wattributes: YES 
Compiler for C supports arguments -Wbool-compare: YES 
Compiler for C supports arguments -Wbool-operation: YES 
Compiler for C supports arguments -Wbuiltin-declaration-mismatch: YES 
Compiler for C supports arguments -Wbuiltin-macro-redefined: YES 
Compiler for C supports arguments -Wcannot-profile: YES 
Compiler for C supports arguments -Wcast-align: YES 
Compiler for C supports arguments -Wcast-align=strict: YES 
Compiler for C supports arguments -Wno-cast-function-type: YES 
Compiler for C supports arguments -Wchar-subscripts: YES 
Compiler for C supports arguments -Wclobbered: YES 
Compiler for C supports arguments -Wcomment: YES 
Compiler for C supports arguments -Wcomments: YES 
Compiler for C supports arguments -Wcoverage-mismatch: YES 
Compiler for C supports arguments -Wcpp: YES 
Compiler for C supports arguments -Wdangling-else: YES 
Compiler for C supports arguments -Wdate-time: YES 
Compiler for C supports arguments -Wdeclaration-after-statement: YES 
Compiler for C supports arguments -Wdeprecated-declarations: YES 
Compiler for C supports arguments -Wdesignated-init: YES 
Compiler for C supports arguments -Wdiscarded-array-qualifiers: YES 
Compiler for C supports arguments -Wdiscarded-qualifiers: YES 
Compiler for C supports arguments -Wdiv-by-zero: YES 
Compiler for C supports arguments -Wduplicated-cond: YES 
Compiler for C supports arguments -Wduplicate-decl-specifier: YES 
Compiler for C supports arguments -Wempty-body: YES 
Compiler for C supports arguments -Wendif-labels: YES 
Compiler for C supports arguments -Wexpansion-to-defined: YES 
Compiler for C supports arguments -Wformat-contains-nul: YES 
Compiler for C supports arguments -Wformat-extra-args: YES 
Compiler for C supports arguments -Wno-format-nonliteral: YES 
Compiler for C supports arguments -Wformat-overflow=2: YES 
Compiler for C supports arguments -Wformat-security: YES 
Compiler for C supports arguments -Wno-format-truncation: YES 
Compiler for C supports arguments -Wformat-y2k: YES 
Compiler for C supports arguments -Wformat-zero-length: YES 
Compiler for C supports arguments -Wframe-address: YES 
Compiler for C supports arguments -Wframe-larger-than=4096: YES 
Compiler for C supports arguments -Wfree-nonheap-object: YES 
Compiler for C supports arguments -Whsa: YES 
Compiler for C supports arguments -Wif-not-aligned: YES 
Compiler for C supports arguments -Wignored-attributes: YES 
Compiler for C supports arguments -Wignored-qualifiers: YES 
Compiler for C supports arguments -Wimplicit: YES 
Compiler for C supports arguments -Wimplicit-fallthrough=5: YES 
Compiler for C supports arguments -Wimplicit-function-declaration: YES 
Compiler for C supports arguments -Wimplicit-int: YES 
Compiler for C supports arguments -Wincompatible-pointer-types: YES 
Compiler for C supports arguments -Winit-self: YES 
Compiler for C supports arguments -Winline: YES 
Compiler for C supports arguments -Wint-conversion: YES 
Compiler for C supports arguments -Wint-in-bool-context: YES 
Compiler for C supports arguments -Wint-to-pointer-cast: YES 
Compiler for C supports arguments -Winvalid-memory-model: YES 
Compiler for C supports arguments -Winvalid-pch: YES 
Compiler for C supports arguments -Wjump-misses-init: YES 
Compiler for C supports arguments -Wlogical-not-parentheses: YES 
Compiler for C supports arguments -Wlogical-op: YES 
Compiler for C supports arguments -Wmain: YES 
Compiler for C supports arguments -Wmaybe-uninitialized: YES 
Compiler for C supports arguments -Wmemset-elt-size: YES 
Compiler for C supports arguments -Wmemset-transposed-args: YES 
Compiler for C supports arguments -Wmisleading-indentation: YES 
Compiler for C supports arguments -Wmissing-attributes: YES 
Compiler for C supports arguments -Wmissing-braces: YES 
Compiler for C supports arguments -Wmissing-declarations: YES 
Compiler for C supports arguments -Wmissing-field-initializers: YES 
Compiler for C supports arguments -Wmissing-include-dirs: YES 
Compiler for C supports arguments -Wmissing-parameter-type: YES 
Compiler for C supports arguments -Wmissing-profile: YES 
Compiler for C supports arguments -Wmissing-prototypes: YES 
Compiler for C supports arguments -Wmultichar: YES 
Compiler for C supports arguments -Wmultistatement-macros: YES 
Compiler for C supports arguments -Wnarrowing: YES 
Compiler for C supports arguments -Wnested-externs: YES 
Compiler for C supports arguments -Wnonnull: YES 
Compiler for C supports arguments -Wnonnull-compare: YES 
Compiler for C supports arguments -Wnormalized=nfc: YES 
Compiler for C supports arguments -Wnull-dereference: YES 
Compiler for C supports arguments -Wodr: YES 
Compiler for C supports arguments -Wold-style-declaration: YES 
Compiler for C supports arguments -Wold-style-definition: YES 
Compiler for C supports arguments -Wopenmp-simd: YES 
Compiler for C supports arguments -Woverflow: YES 
Compiler for C supports arguments -Woverride-init: YES 
Compiler for C supports arguments -Wpacked-bitfield-compat: YES 
Compiler for C supports arguments -Wpacked-not-aligned: YES 
Compiler for C supports arguments -Wparentheses: YES 
Compiler for C supports arguments -Wpointer-arith: YES 
Compiler for C supports arguments -Wpointer-compare: YES 
Compiler for C supports arguments -Wpointer-sign: YES 
Compiler for C supports arguments -Wpointer-to-int-cast: YES 
Compiler for C supports arguments -Wpragmas: YES 
Compiler for C supports arguments -Wpsabi: YES 
Compiler for C supports arguments -Wrestrict: YES 
Compiler for C supports arguments -Wreturn-local-addr: YES 
Compiler for C supports arguments -Wreturn-type: YES 
Compiler for C supports arguments -Wscalar-storage-order: YES 
Compiler for C supports arguments -Wsequence-point: YES 
Compiler for C supports arguments -Wshadow: YES 
Compiler for C supports arguments -Wshift-count-negative: YES 
Compiler for C supports arguments -Wshift-count-overflow: YES 
Compiler for C supports arguments -Wshift-negative-value: YES 
Compiler for C supports arguments -Wshift-overflow=2: YES 
Compiler for C supports arguments -Wno-sign-compare: YES 
Compiler for C supports arguments -Wsizeof-array-argument: YES 
Compiler for C supports arguments -Wsizeof-pointer-div: YES 
Compiler for C supports arguments -Wsizeof-pointer-memaccess: YES 
Compiler for C supports arguments -Wstrict-aliasing: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES 
Compiler for C supports arguments -Wstringop-overflow=2: YES 
Compiler for C supports arguments -Wstringop-truncation: YES 
Compiler for C supports arguments -Wsuggest-attribute=cold: YES 
Compiler for C supports arguments -Wno-suggest-attribute=const: YES 
Compiler for C supports arguments -Wsuggest-attribute=format: YES 
Compiler for C supports arguments -Wsuggest-attribute=noreturn: YES 
Compiler for C supports arguments -Wno-suggest-attribute=pure: YES 
Compiler for C supports arguments -Wsuggest-final-methods: YES 
Compiler for C supports arguments -Wsuggest-final-types: YES 
Compiler for C supports arguments -Wswitch: YES 
Compiler for C supports arguments -Wswitch-bool: YES 
Compiler for C supports arguments -Wswitch-enum: YES 
Compiler for C supports arguments -Wswitch-unreachable: YES 
Compiler for C supports arguments -Wsync-nand: YES 
Compiler for C supports arguments -Wtautological-compare: YES 
Compiler for C supports arguments -Wtrampolines: YES 
Compiler for C supports arguments -Wtrigraphs: YES 
Compiler for C supports arguments -Wtype-limits: YES 
Compiler for C supports arguments -Wno-typedef-redefinition: NO 
Compiler for C supports arguments -Wuninitialized: YES 
Compiler for C supports arguments -Wunknown-pragmas: YES 
Compiler for C supports arguments -Wunused: YES 
Compiler for C supports arguments -Wunused-but-set-parameter: YES 
Compiler for C supports arguments -Wunused-but-set-variable: YES 
Compiler for C supports arguments -Wunused-const-variable=2: YES 
Compiler for C supports arguments -Wunused-function: YES 
Compiler for C supports arguments -Wunused-label: YES 
Compiler for C supports arguments -Wunused-local-typedefs: YES 
Compiler for C supports arguments -Wunused-parameter: YES 
Compiler for C supports arguments -Wunused-result: YES 
Compiler for C supports arguments -Wunused-value: YES 
Compiler for C supports arguments -Wunused-variable: YES 
Compiler for C supports arguments -Wvarargs: YES 
Compiler for C supports arguments -Wvariadic-macros: YES 
Compiler for C supports arguments -Wvector-operation-performance: YES 
Compiler for C supports arguments -Wvla: YES 
Compiler for C supports arguments -Wvolatile-register-var: YES 
Compiler for C supports arguments -Wwrite-strings: YES 
Compiler for C supports arguments -fstack-protector-strong: YES 
First supported argument: -fstack-protector-strong
Checking if "-Wdouble-promotion" compiles: YES 
Compiler for C supports arguments -Wsuggest-attribute=format: YES (cached)
Compiler for C supports arguments -Wframe-larger-than=262144: YES 
Compiler for C supports link arguments -Wl,-z,relro: YES 
Compiler for C supports link arguments -Wl,-z,now: YES 
Compiler for C supports link arguments -Wl,-z,nodelete: YES 
Compiler for C supports link arguments -Wl,-z,defs: YES 
Compiler for C supports link arguments -Wl,--no-copy-dt-needed-entries: YES 
Compiler for C supports link arguments -Wl,--version-script=/home/penghao/libvirt/libvirt-8.10.0/src/libvirt_qemu.syms: YES 
Compiler for C supports link arguments -Wl,-export-dynamic: YES 
First supported link argument: -Wl,-export-dynamic
Checking for function "elf_aux_info" : NO 
Checking for function "fallocate" : YES 
Checking for function "getauxval" : YES 
Checking for function "getegid" : YES 
Checking for function "geteuid" : YES 
Checking for function "getgid" : YES 
Checking for function "getifaddrs" : YES 
Checking for function "getmntent_r" : YES 
Checking for function "getpwuid_r" : YES 
Checking for function "getrlimit" : YES 
Checking for function "getuid" : YES 
Checking for function "getutxid" : YES 
Checking for function "if_indextoname" : YES 
Checking for function "mmap" : YES 
Checking for function "newlocale" : YES 
Checking for function "pipe2" : YES 
Checking for function "posix_fallocate" : YES 
Checking for function "posix_memalign" : YES 
Checking for function "prlimit" : YES 
Checking for function "sched_setscheduler" : YES 
Checking for function "setgroups" : YES 
Checking for function "setrlimit" : YES 
Checking for function "symlink" : YES 
Checking for function "sysctlbyname" : NO 
Checking for function "__lxstat" : YES 
Checking for function "__lxstat64" : YES 
Checking for function "__xstat" : YES 
Checking for function "__xstat64" : YES 
Checking for function "lstat" : YES 
Checking for function "lstat64" : YES 
Checking for function "stat" : YES 
Checking for function "stat64" : YES 
Header <sys/stat.h> has symbol "__lxstat" : NO 
Header <sys/stat.h> has symbol "__lxstat64" : NO 
Header <sys/stat.h> has symbol "__xstat" : NO 
Header <sys/stat.h> has symbol "__xstat64" : NO 
Header <sys/stat.h> has symbol "lstat" : YES 
Header <sys/stat.h> has symbol "lstat64" : NO 
Header <sys/stat.h> has symbol "stat" : YES 
Header <sys/stat.h> has symbol "stat64" : NO 
Has header "asm/hwcap.h" : NO 
Has header "ifaddrs.h" : YES 
Has header "libtasn1.h" : YES 
Has header "linux/kvm.h" : YES 
Has header "linux/magic.h" : YES 
Has header "mntent.h" : YES 
Has header "net/ethernet.h" : YES 
Has header "net/if.h" : YES 
Has header "pty.h" : YES 
Has header "pwd.h" : YES 
Has header "sched.h" : YES 
Has header "sys/auxv.h" : YES 
Has header "sys/ioctl.h" : YES 
Has header "sys/mount.h" : YES 
Has header "sys/syscall.h" : YES 
Has header "sys/ucred.h" : NO 
Has header "syslog.h" : YES 
Has header "util.h" : NO 
Has header "xlocale.h" : NO 
Has header "linux/devlink.h" : YES 
Has header "linux/param.h" : YES 
Has header "linux/sockios.h" : YES 
Has header "linux/if_bridge.h" : YES 
Has header "linux/if_tun.h" : YES 
Header <endian.h> has symbol "htole64" : YES 
Header <linux/ethtool.h> has symbol "ETH_FLAG_TXVLAN" : YES 
Header <linux/ethtool.h> has symbol "ETH_FLAG_NTUPLE" : YES 
Header <linux/ethtool.h> has symbol "ETH_FLAG_RXHASH" : YES 
Header <linux/ethtool.h> has symbol "ETH_FLAG_LRO" : YES 
Header <linux/ethtool.h> has symbol "ETHTOOL_GGSO" : YES 
Header <linux/ethtool.h> has symbol "ETHTOOL_GGRO" : YES 
Header <linux/ethtool.h> has symbol "ETHTOOL_GFLAGS" : YES 
Header <linux/ethtool.h> has symbol "ETHTOOL_GFEATURES" : YES 
Header <linux/ethtool.h> has symbol "ETHTOOL_SCOALESCE" : YES 
Header <linux/ethtool.h> has symbol "ETHTOOL_GCOALESCE" : YES 
Header <linux/if_vlan.h> has symbol "GET_VLAN_VID_CMD" : YES 
Header <unistd.h> has symbol "SEEK_HOLE" : YES 
Header <net/if_dl.h> has symbol "link_addr" : NO 
Header <sched.h> has symbol "cpu_set_t" : YES 
Header <linux/devlink.h> has symbol "DEVLINK_CMD_ESWITCH_GET" : YES 
Header <linux/vhost.h> has symbol "VHOST_VSOCK_SET_GUEST_CID" : YES 
Header <linux/bpf.h> has symbol "BPF_PROG_QUERY" : YES 
Header <linux/bpf.h> has symbol "BPF_CGROUP_DEVICE" : YES 
Header <net/if_bridgevar.h> has symbol "BRDGSFD" : NO 
Header <sys/cpuset.h> has symbol "cpuset_getaffinity" : NO 
Header <mach/clock.h> has symbol "clock_serv_t" : NO 
Checking for type "struct ifreq" : YES 
Checking for type "struct sockpeercred" : NO 
Checking whether type "struct ifreq" has member "ifr_newname" : YES 
Checking whether type "struct ifreq" has member "ifr_ifindex" : YES 
Checking whether type "struct ifreq" has member "ifr_index" : NO 
Checking whether type "struct ifreq" has member "ifr_hwaddr" : YES 
Checking for size of "long" : 8
Program perl found: YES (/usr/bin/perl)
Program python3 found: YES (/usr/bin/python3)
Program xmllint found: YES (/usr/bin/xmllint)
Program xsltproc found: YES (/usr/bin/xsltproc)
Program rpcgen found: YES (/usr/bin/rpcgen)
Program augparse found: NO
Program dmidecode found: YES (/usr/sbin/dmidecode)
Program ebtables found: YES (/usr/sbin/ebtables)
Program flake8 found: NO
Program ip found: YES (/usr/sbin/ip)
Program ip6tables found: YES (/usr/sbin/ip6tables)
Program iptables found: YES (/usr/sbin/iptables)
Program iscsiadm found: NO
Program mdevctl found: NO
Program mm-ctl found: NO
Program modprobe found: YES (/usr/sbin/modprobe)
Program ovs-vsctl found: NO
Program pdwtags found: NO
Program rmmod found: YES (/usr/sbin/rmmod)
Program scrub found: NO
Program tc found: YES (/usr/sbin/tc)
Program udevadm found: YES (/usr/bin/udevadm)
Found pkg-config: /usr/bin/pkg-config (0.29.2)
Run-time dependency libtirpc found: YES 1.3.2
Library acl found: YES
Found CMake: /usr/bin/cmake (3.23.2)
Run-time dependency libapparmor found: NO (tried pkgconfig and cmake)
Library attr found: YES
Run-time dependency audit found: NO (tried pkgconfig and cmake)
Run-time dependency bash-completion found: YES 2.11.0
Run-time dependency blkid found: YES 2.38.0
Run-time dependency libcap-ng found: NO (tried pkgconfig and cmake)
Run-time dependency libcurl found: YES 7.84.0
Run-time dependency devmapper found: YES 1.02.185
Library dl found: YES
Has header "dlfcn.h" : YES 
Run-time dependency fuse3 found: NO (tried pkgconfig and cmake)
Run-time dependency fuse found: YES 2.9.9
Run-time dependency glib-2.0 found: YES 2.72.3
Run-time dependency gobject-2.0 found: YES 2.72.3
Run-time dependency gio-unix-2.0 found: YES 2.72.3
Run-time dependency glusterfs-api found: NO (tried pkgconfig and cmake)
Run-time dependency gnutls found: YES 3.7.3
Run-time dependency libiscsi found: NO (tried pkgconfig and cmake)
Run-time dependency libnl-3.0 found: YES 3.5.0
Run-time dependency libnl-route-3.0 found: YES 3.5.0
Run-time dependency libparted found: YES 3.5
pcap-config found: NO need ['>=1.5.0']
Run-time dependency pcap found: NO (tried pkgconfig and config-tool)
Run-time dependency libssh found: NO (tried pkgconfig and cmake)
Run-time dependency libssh2 found: NO (tried pkgconfig and cmake)
Run-time dependency libxml-2.0 found: YES 2.9.14
Library m found: YES
Run-time dependency netcf found: NO (tried pkgconfig and cmake)
Checking for function "gettext" : YES 
Has header "libintl.h" : YES 
Program xgettext found: YES (/usr/bin/xgettext)
Program msgfmt found: YES (/usr/bin/msgfmt)
Program msgmerge found: YES (/usr/bin/msgmerge)
Library numa found: NO
Run-time dependency openwsman found: NO (tried pkgconfig and cmake)
Run-time dependency parallels-sdk found: NO (tried pkgconfig and cmake)
Run-time dependency pciaccess found: YES 0.16
Library rbd found: NO
Library rados found: NO
Run-time dependency readline found: YES 8.1
Run-time dependency libsanlock_client found: NO (tried pkgconfig and cmake)
Run-time dependency libsasl2 found: NO (tried pkgconfig and cmake)
Run-time dependency libselinux found: NO (tried pkgconfig and cmake)
Run-time dependency threads found: YES
Run-time dependency libudev found: YES 251
Library util found: YES
Run-time dependency wireshark found: NO (tried pkgconfig and cmake)
Run-time dependency yajl found: YES 2.1.0
Program pkcheck found: YES (/usr/bin/pkcheck)
Run-time dependency xenlight found: NO (tried pkgconfig and cmake)
Checking if "lxc support" compiles: YES 
Program qemu-bridge-helper found: NO
Program qemu-pr-helper found: NO
Program slirp-helper found: NO
Program dbus-daemon found: YES (/usr/bin/dbus-daemon)
Has header "mntent.h" : YES (cached)
Program mount found: YES (/usr/bin/mount)
Program umount found: YES (/usr/bin/umount)
Program mkfs found: YES (/usr/sbin/mkfs)
Program showmount found: NO
Program pvcreate found: YES (/usr/sbin/pvcreate)
Program vgcreate found: YES (/usr/sbin/vgcreate)
Program lvcreate found: YES (/usr/sbin/lvcreate)
Program pvremove found: YES (/usr/sbin/pvremove)
Program vgremove found: YES (/usr/sbin/vgremove)
Program lvremove found: YES (/usr/sbin/lvremove)
Program lvchange found: YES (/usr/sbin/lvchange)
Program vgchange found: YES (/usr/sbin/vgchange)
Program vgscan found: YES (/usr/sbin/vgscan)
Program pvs found: YES (/usr/sbin/pvs)
Program vgs found: YES (/usr/sbin/vgs)
Program lvs found: YES (/usr/sbin/lvs)
Program dtrace found: NO
Program systemctl found: YES (/usr/bin/systemctl)
Has header "nss.h" : YES 
Checking for type "struct gaih_addrtuple" : YES 
Checking for type "ns_mtab" : NO 
Program apibuild.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/apibuild.py)
Program augeas-gentest.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/augeas-gentest.py)
Program check-aclperms.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-aclperms.py)
Program check-aclrules.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-aclrules.py)
Program check-driverimpls.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-driverimpls.py)
Program check-drivername.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/check-drivername.py)
Program check-file-access.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-file-access.py)
Program check-html-references.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-html-references.py)
Program check-remote-protocol.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/check-remote-protocol.py)
Program check-symfile.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-symfile.py)
Program check-symsorting.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/check-symsorting.py)
Program dtrace2systemtap.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/dtrace2systemtap.py)
Program esx_vi_generator.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/esx_vi_generator.py)
Program genaclperms.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/genaclperms.py)
Program genpolkit.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/genpolkit.py)
Program gensystemtap.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/gensystemtap.py)
Program group-qemu-caps.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/group-qemu-caps.py)
Program header-ifdef.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/header-ifdef.py)
Program hvsupport.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/hvsupport.py)
Program hyperv_wmi_generator.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/hyperv_wmi_generator.py)
Program meson-dist.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-dist.py)
Program meson-gen-authors.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-gen-authors.py)
Program meson-gen-def.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-gen-def.py)
Program meson-gen-sym.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-gen-sym.py)
Program meson-install-dirs.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/meson-install-dirs.py)
Program meson-install-symlink.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/meson-install-symlink.py)
Program meson-install-web.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-install-web.py)
Program meson-python.sh found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-python.sh)
Program meson-timestamp.py found: YES (/home/penghao/libvirt/libvirt-8.10.0/scripts/meson-timestamp.py)
Program mock-noinline.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/mock-noinline.py)
Program prohibit-duplicate-header.py found: YES (/usr/bin/python3.10 /home/penghao/libvirt/libvirt-8.10.0/scripts/prohibit-duplicate-header.py)
Configuring libvirt-common.h using configuration
Program /home/penghao/libvirt/libvirt-8.10.0/src/keycodemapdb/tools/keymap-gen found: YES (/home/penghao/libvirt/libvirt-8.10.0/src/keycodemapdb/tools/keymap-gen)
Program genprotocol.pl found: YES (/home/penghao/libvirt/libvirt-8.10.0/src/rpc/genprotocol.pl)
Program gendispatch.pl found: YES (/home/penghao/libvirt/libvirt-8.10.0/src/rpc/gendispatch.pl)
Configuring libvirtd.conf.tmp with command
Configuring libvirtd.aug.tmp with command
Configuring test_libvirtd.aug.tmp with command
Configuring virtd.conf.tmp with command
Configuring virtd.aug.tmp with command
Configuring test_virtd.aug.tmp with command
Configuring libvirtd.qemu.logrotate using configuration
Configuring libvirtd.lxc.logrotate using configuration
Configuring libvirtd.libxl.logrotate using configuration
Configuring libvirtd.logrotate using configuration
Configuring qemu.conf using configuration
Configuring test_libvirtd_qemu.aug.tmp using configuration
Configuring libvirtd.conf using configuration
Configuring libvirtd.aug using configuration
Configuring test_libvirtd.aug.tmp using configuration
Configuring virtproxyd.conf using configuration
Configuring virtproxyd.aug using configuration
Configuring test_virtproxyd.aug.tmp using configuration
Configuring virtinterfaced.conf using configuration
Configuring virtinterfaced.aug using configuration
Configuring test_virtinterfaced.aug.tmp using configuration
Configuring virtnetworkd.conf using configuration
Configuring virtnetworkd.aug using configuration
Configuring test_virtnetworkd.aug.tmp using configuration
Configuring virtnodedevd.conf using configuration
Configuring virtnodedevd.aug using configuration
Configuring test_virtnodedevd.aug.tmp using configuration
Configuring virtnwfilterd.conf using configuration
Configuring virtnwfilterd.aug using configuration
Configuring test_virtnwfilterd.aug.tmp using configuration
Configuring virtsecretd.conf using configuration
Configuring virtsecretd.aug using configuration
Configuring test_virtsecretd.aug.tmp using configuration
Configuring virtstoraged.conf using configuration
Configuring virtstoraged.aug using configuration
Configuring test_virtstoraged.aug.tmp using configuration
Configuring virtlxcd.conf using configuration
Configuring virtlxcd.aug using configuration
Configuring test_virtlxcd.aug.tmp using configuration
Configuring virtchd.conf using configuration
Configuring virtchd.aug using configuration
Configuring test_virtchd.aug.tmp using configuration
Configuring virtqemud.conf using configuration
Configuring virtqemud.aug using configuration
Configuring test_virtqemud.aug.tmp using configuration
Configuring virtvboxd.conf using configuration
Configuring virtvboxd.aug using configuration
Configuring test_virtvboxd.aug.tmp using configuration
Configuring libvirtd.service using configuration
Configuring libvirtd.socket using configuration
Configuring libvirtd-ro.socket using configuration
Configuring libvirtd-admin.socket using configuration
Configuring libvirtd-tcp.socket using configuration
Configuring libvirtd-tls.socket using configuration
Configuring virtproxyd.service using configuration
Configuring virtproxyd.socket using configuration
Configuring virtproxyd-ro.socket using configuration
Configuring virtproxyd-admin.socket using configuration
Configuring virtproxyd-tcp.socket using configuration
Configuring virtproxyd-tls.socket using configuration
Configuring virtinterfaced.service using configuration
Configuring virtinterfaced.socket using configuration
Configuring virtinterfaced-ro.socket using configuration
Configuring virtinterfaced-admin.socket using configuration
Configuring virtlockd.service using configuration
Configuring virtlockd.socket using configuration
Configuring virtlockd-admin.socket using configuration
Configuring virtlogd.service using configuration
Configuring virtlogd.socket using configuration
Configuring virtlogd-admin.socket using configuration
Configuring virtnetworkd.service using configuration
Configuring virtnetworkd.socket using configuration
Configuring virtnetworkd-ro.socket using configuration
Configuring virtnetworkd-admin.socket using configuration
Configuring virtnodedevd.service using configuration
Configuring virtnodedevd.socket using configuration
Configuring virtnodedevd-ro.socket using configuration
Configuring virtnodedevd-admin.socket using configuration
Configuring virtnwfilterd.service using configuration
Configuring virtnwfilterd.socket using configuration
Configuring virtnwfilterd-ro.socket using configuration
Configuring virtnwfilterd-admin.socket using configuration
Configuring virtsecretd.service using configuration
Configuring virtsecretd.socket using configuration
Configuring virtsecretd-ro.socket using configuration
Configuring virtsecretd-admin.socket using configuration
Configuring virtstoraged.service using configuration
Configuring virtstoraged.socket using configuration
Configuring virtstoraged-ro.socket using configuration
Configuring virtstoraged-admin.socket using configuration
Configuring virtlxcd.service using configuration
Configuring virtlxcd.socket using configuration
Configuring virtlxcd-ro.socket using configuration
Configuring virtlxcd-admin.socket using configuration
Configuring virtchd.service using configuration
Configuring virtchd.socket using configuration
Configuring virtchd-ro.socket using configuration
Configuring virtchd-admin.socket using configuration
Configuring virtqemud.service using configuration
Configuring virtqemud.socket using configuration
Configuring virtqemud-ro.socket using configuration
Configuring virtqemud-admin.socket using configuration
Configuring virtvboxd.service using configuration
Configuring virtvboxd.socket using configuration
Configuring virtvboxd-ro.socket using configuration
Configuring virtvboxd-admin.socket using configuration
Configuring libvirt-lxc.pc using configuration
Configuring libvirt-qemu.pc using configuration
Configuring libvirt.pc using configuration
Configuring virt-xml-validate using configuration
Configuring virt-pki-validate using configuration
Configuring libvirt-guests.sh using configuration
Configuring libvirt-guests.service using configuration
Configuring virsh using configuration
Configuring virt-admin using configuration
Configuring cpu-baseline.rng using configuration
Configuring device.rng using configuration
Configuring privatedata.rng using configuration
Library tasn1 found: YES
Program libvirtd-fail found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/libvirtd-fail)
Program libvirtd-pool found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/libvirtd-pool)
Program virsh-auth found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-auth)
Program virsh-checkpoint found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-checkpoint)
Program virsh-cpuset found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-cpuset)
Program virsh-define-dev-segfault found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-define-dev-segfault)
Program virsh-int-overflow found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-int-overflow)
Program virsh-optparse found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-optparse)
Program virsh-output found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-output)
Program virsh-read-bufsiz found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-read-bufsiz)
Program virsh-read-non-seekable found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-read-non-seekable)
Program virsh-schedinfo found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-schedinfo)
Program virsh-self-test found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-self-test)
Program virsh-snapshot found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-snapshot)
Program virsh-start found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-start)
Program virsh-undefine found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-undefine)
Program virsh-uriprecedence found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-uriprecedence)
Program virsh-vcpupin found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virsh-vcpupin)
Program virt-admin-self-test found: YES (/home/penghao/libvirt/libvirt-8.10.0/tests/virt-admin-self-test)
Program msgfmt found: YES (/usr/bin/msgfmt)
Program msginit found: YES (/usr/bin/msginit)
Program msgmerge found: YES (/usr/bin/msgmerge)
Program xgettext found: YES (/usr/bin/xgettext)
Program rst2html5 rst2html5.py rst2html5-3 found: NOdocs/meson.build:176:2: ERROR: Program 'rst2html5 rst2html5.py rst2html5-3' not found or not executableA full log can be found at /home/penghao/libvirt/libvirt-8.10.0/build/meson-logs/meson-log.txt

可以看到,虽然还是有错误,但是并不是yajl的问题了。从上边的log中可以看到,yajl已经找到了:

Library util found: YES
Run-time dependency wireshark found: NO (tried pkgconfig and cmake)
Run-time dependency yajl found: YES 2.1.0
Program pkcheck found: YES (/usr/bin/pkcheck)

对于新出现的问题,将在后续文章中进行分析和解决。

相关文章:

libvirt零知识学习5 —— libvirt源码编译安装(3)

接前一篇文章libvirt零知识学习4 —— libvirt源码编译安装&#xff08;2&#xff09; 在上篇文章及上上篇文章中构建libvirt的时候遇到了一个问题“ERROR: Problem encountered: YAJL 2 is required to build QEMU driver”。上篇文章讲到即使安装了相应的YAJL库仍然不能解决问…...

Nmap 的使用教程

Nmap是一个网络侦测和安全审计工具。它可以用于发现网络上的主机和服务&#xff0c;并提供广泛的信息&#xff0c;其中包括操作系统类型和版本、应用程序和服务的详细信息等。在本文中&#xff0c;我们将介绍如何使用Nmap扫描网络主机&#xff0c;识别开放端口以及进行操作系统…...

async与await异步编程

ECMA2017中新加入了两个关键字async与await 简单来说它们是基于promise之上的的语法糖&#xff0c;可以让异步操作更加地简单明了 首先我们需要用async关键字&#xff0c;将函数标记为异步函数 async function f() {} f()异步函数就是指&#xff1a;返回值为promise对象的函…...

移动应用架构设计:如何转变开发流程

移动应用架构设计&#xff1a;如何转变开发流程 2023 年掌握移动应用程序架构的指南&#xff08;附案例研究&#xff09; 如果他们要解决这个问题&#xff0c;开发人员需要了解移动架构设计的最佳实践&#xff0c;使他们能够构建用户喜欢的优化应用程序。其中一些做法包括使用…...

NX二次开发 图层函数总结

简介&#xff1a; NX二次开发 图层相关的总结。 函数&#xff1a; uc5007()uc5008()uc5009()UF_LAYER_ask_category_info()获取图层类别的信息UF_LAYER_ask_category_tag()根据图层分类名称查询其图层分类标识UF_LAYER_ask_status()UF_LAYER_ask_work_layer()UF_LAYER_create…...

windows微服务部署

windows部署一.nginx部署1.nginx 官网下载2. 配置nginx3.配置nigix 防止nigix刷新404不生效二.配置redis部署成服务1.在系统配置中 配置为系统变量2.打开快捷登录服务管理#3. 开启redis三.windows部署jar包一.nginx部署 1.nginx 官网下载 地址 官网地址 安装 windows版本 可安…...

Java四种内部类(看这一篇就够了)

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…...

蓝桥杯刷题第二十天

第一题&#xff1a;纸张尺寸问题描述在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm 841mm, 将 A0 纸 沿长边对折后为 A1 纸, 大小为 841mm 594mm, 在对折的过程中长度直接取 下整 (实际裁剪时可能有损耗)。将 A1 纸沿长边对折后为 A2 纸, 依此类推。输入纸张的名称, 请输出…...

如何通过命令行查看CentOS版本信息和linux系统信息

1.如何查看已安装的CentOS版本信息&#xff1a; 1.cat /proc/version 2.uname -a 3.uname -r 4.cat /etc/centos-release 5.lsb_release -a 6.hostnamectl1. 第一种方式输出的结果是&#xff1a; Linux version 3.10.0-1127.el7.x86_64 (mockbuildkbuilder.bsys.centos.org) …...

oracle查询表空间大小以及每个表所占空间的大小

1、查询数据库中所有的表空间以及表空间所占空间的大小&#xff0c;直接执行语句就可以了&#xff1a; select tablespace_name, sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; 2、查看表空间物理文件的名称及大小 select tablespace_name, file_id, …...

C语言通讯录应用程序:从设计到实现

hello&#xff0c;这期给大家带来C语言实现静态通讯录,主要也是建立起创建大项目的思维&#xff0c;与往期这两篇博客有点类似 C语言实现三子棋 C语言实现扫雷 文章目录&#x1f913;通讯录介绍&#x1f636;‍&#x1f32b;️效果演示&#x1f920;主题框架头文件测试文件函数…...

银河麒麟v10sp2安装nginx

nginx官网下载&#xff1a;http://nginx.org/download/ 银河麒麟系统请先检查yum源是否配置&#xff0c;若没有配置请参考&#xff1a;https://qdhhkj.blog.csdn.net/article/details/129680789 一、安装 1、yum安装依赖 yum install gcc gcc-c make unzip pcre pcre-devel …...

华为笔试题OD

华为笔试题OD 1题 华为od-2022.11.5-k优雅阈值 题目内容 如果一个数组中出现次数最多的元素出现大于等于 &#xfffd;k 次&#xff0c; 被称为 &#xfffd;−优雅数组k−优雅数组 &#xff0c; &#xfffd;k 也可以被称为优雅阈值。 例如&#xff0c;数组 [1,2,3,1,2,3,…...

Win10+Anconda安装.whl文件到指定环境——以pycocotools为例

Anconda安装.whl文件到指定环境1.Whl文件2.pycocotools安装前言&#xff1a;本篇文章主要记录了两个问题&#xff1a; &#xff08;1&#xff09;Win10环境下&#xff0c;利用Anconda安装.whl文件到指定环境的方法&#xff1b; &#xff08;2&#xff09;Win10系统安装pycocoto…...

全自动托盘四向穿梭车|拥有输送系统提升机AGV的托盘四向穿梭车立体库的软硬件配置系统

托盘四向穿梭车一般是在两向穿梭车的结构上设计改进而来的&#xff0c;托盘两向穿梭车在取货时可以实现“先进先出”或“先入后出”模式&#xff0c;多用于量大且品种少的行业。但是随着市场的不断迅速发展&#xff0c;各大企业、商家不仅对于小批量、多批次的需求越来越大&…...

【Linux】进程概念二

文章目录进程概念二1. 进程状态2. 进程状态查看3. 僵尸进程3.1 僵尸进程的危害4. 孤儿进程5. 环境变量5.1 常见环境变量5.2 查看环境变量的方法5.3 测试PATH5.4 环境变量相关的命令5.5 环境变量的组织方式5.6 通过代码获取环境变量6. 程序地址空间7. 进程地址空间8. 扩展8.1 为…...

如何用C语言实现渣男通讯录

注意&#xff1a;纯属玩笑&#xff0c;博大家一乐&#xff0c;切勿当真&#x1f4d6;首先我们要知道一个渣男通讯录有哪些信息要包含哪些功能1.你的通讯录要装多少个女朋友你得规定吧&#xff1b;2.每个女朋友的姓名&#xff0c;年龄&#xff0c;电话&#xff0c;爱好这些要有吧…...

【从零开始的C语言】操作符详解

文章目录前言一、操作符分类二、算术操作符三、移位操作符3.1 左移3.2 右移四、位操作符&#xff08;重要&#xff09;五、赋值操作符六、单目操作符七、关系操作符八、逻辑操作符九、条件操作符十、逗号表达式前言 本篇文章开始&#xff0c;我将开设《从零开始的C语言》专栏&…...

黑马在线教育数仓实战1

1. 教育项目的架构说明 项目的架构: 基于cloudera manager大数据统一管理平台, 在此平台之上构建大数据相关的软件(zookeeper,HDFS,YARN,HIVE,OOZIE,SQOOP,HUE...), 除此以外, 还使用FINEBI实现数据报表展示 各个软件相关作用: zookeeper: 集群管理工具, 主要服务于…...

python中pandas模块数据处理小案例

内容目录1. 添加随机日期2. 聚合求和3.聚合求和排序4. 聚合求和排序取前十5. 聚合取极值6. 重新赋值7. 按条件赋值pandas作为数据处理的得力工具&#xff0c;简便了数据开发过程&#xff0c;之前串联了pandas的使用方法&#xff0c;现在用几个小案例巩固一下常用的pandas方法。…...

从 X 入门Pytorch——Tensor的自动微分、计算图,常见的with torch.no_grad()机制

这里写目录标题1 Pytorch计算图和自动微分2 将单个数据从计算图中剥离 .detach3 使用with torch.go_grad(): 包含的代码段不会计算微分1 Pytorch计算图和自动微分 从功能上理解&#xff1a; 计算图就是类似于数据结构中的无环有向图&#xff0c;Pytorch中的计算图就是为了记录…...

三十七、实战演练之接口自动化平台的文件上传

上传文件功能 上传文件功能主要针对需要测试上传文件的接口。原理是&#xff0c;把要测试上传的文件先上传到测试平台&#xff0c;然后把路径写入 用例中&#xff0c;后台真正测试时再将其进行上传。 一、上传文件模型 在testplans/models.py 模块中编写如下模型&#xff1a;…...

菜鸟刷题Day1

菜鸟刷题Day1 一.自守数&#xff1a;自守数_牛客题霸_牛客网 (nowcoder.com) 描述 自守数是指一个数的平方的尾数等于该数自身的自然数。例如&#xff1a;25^2 625&#xff0c;76^2 5776&#xff0c;9376^2 87909376。请求出n(包括n)以内的自守数的个数 解题思路&#x…...

cjson文件格式介绍

cjson是一种轻量级的JSON解析库&#xff0c;它支持将JSON格式的数据转换为C语言中的数据结构&#xff0c;同时也支持将C语言中的数据结构转换为JSON格式的数据。cjson的文件格式是指在使用cjson库时&#xff0c;将JSON格式的数据存储在文件中&#xff0c;然后通过cjson库读取文…...

【Nginx二】——Nginx常用命令 配置文件

Nginx常用命令 配置文件常用命令启动和重启 Nginx配置文件maineventshttp常用命令 安装完成nginx后&#xff0c;输入 nginx -&#xff1f;查询nginx命令行参数 nginx version: nginx/1.22.1 Usage: nginx [-?hvVtTq] [-s signal] [-p prefix][-e filename] [-c filename] [-…...

3月最新!AIGC公司生态地图;开发者实用ChatGPT工具清单;上手必会的SD绘图教程;字幕组全自动化流程大公开 | ShowMeAI日报

&#x1f440;日报&周刊合集 | &#x1f3a1;生产力工具与行业应用大全 | &#x1f9e1; 点赞关注评论拜托啦&#xff01; &#x1f916; 『光年之外诚邀产品经理加入』古典产品经理的复兴&#xff01; 光年之外创始人王慧文在社交平台发帖&#xff0c;公布联合创始人团队基…...

python - 递归函数

递归函数 什么是递归 在函数内部&#xff0c;可以调用其他函数。如果一个函数在内部调用自身本身&#xff0c;这个函数就是递归函数 递归函数必须有一个明确的结束条件每进入更深一层的递归时&#xff0c;问题规模相对于上一次递归都应减少相邻两次重复之间有紧密的联系&…...

ring_log环形日志-6M缓冲区_proc接口

文章目录log_tools.clog.cspin_lockseq_putsseq_readseq_writesingle_openmakefiletest.sh测试&#xff1a;运行./test.sh读取日志插入日志echo cat测试参考&#xff1a;log_tools.c #include <stdlib.h> #include <stdio.h> #include <sys/types.h> #includ…...

Linux内核进程管理几种CPU调度策略

CPU调度我们知道&#xff0c;程序需要获得CPU的资源才能被调度和执行&#xff0c;那么当一个进程由于某种原因放弃CPU然后进入阻塞状态&#xff0c;下一个获得CPU资源去被调度执行的进程会是谁呢&#xff1f;下图中&#xff0c;进程1因为阻塞放弃CPU资源&#xff0c;此时&#…...

SpringBoot整合Flink(施耐德PLC物联网信息采集)

SpringBoot整合Flink&#xff08;施耐德PLC物联网信息采集&#xff09;Linux环境安装kafka前情&#xff1a;施耐德PLC设备&#xff08;TM200C16R&#xff09;设置好信息采集程序&#xff0c;连接局域网&#xff0c;SpringBoot订阅MQTT主题&#xff0c;消息转至kafka&#xff0c…...