C++高性能并行编程与优化 - 课件 - 16 现代 CMake 模块化项目管理指南cmake 的文件,我称之为包配置文件。 • Qt5Config.cmake 是你安装 Qt5 时,随 libQt5Core.so 等实际的库文件,一起装到你的 系统中去的。以我的 Arch Linux 系统为例: • 包配置文件位于 /usr/lib/cmake/Qt5/Qt5Config.cmake 。 • 实际的动态库文件位于 /usr/lib/libQt5Core.so 。 find_package 是系统的架构,例如 x86_64-linux-gnu 或 i386-linux-gnu 。 • (用于伺候 Ubuntu 喜欢把库文件套娃在 /usr/lib/x86_64-linux-gnu 目录下) https://zhuanlan.zhihu.com/p/60479441 举例说明 find_package 搜索路径 • 例如你是 64 位的 Linux 系统, find_package(Qt5 t5Config.cmake • /usr/lib/x86_64-linux-gnu/cmake/Qt5/Qt5Config.cmake • /usr/share/cmake/Qt5/Qt5Config.cmake • /usr/lib/Qt5/Qt5Config.cmake • /usr/lib/x86_64-linux-gnu/Qt5/Qt5Config.cmake • /usr/share/Qt5/Qt5Config0 码力 | 56 页 | 6.87 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 11 现代 CMake 进阶指南--target install • cmake -B build 免去了先创建 build 目录再切换进去再指定源码目录的麻烦。 • cmake --build build 统一了不同平台( Linux 上会调用 make , Windows 上调用 devenv.exe ) • 结论:从现在开始,如果在命令行操作 cmake ,请使用更方便的 -B 和 --build 命令。 // 在源码目录用 CMAKE_INSTALL_PREFIX ) -G 选项:指定要用的生成器 • 众所周知, CMake 是一个跨平台的构建系统,可以从 CMakeLists.txt 生成不同类型的构建系 统(比如 Linux 的 make , Windows 的 MSBuild ),从而让构建规则可以只写一份,跨平 台使用。 • 过去的软件(例如 TBB )要跨平台,只好 Makefile 的构建规则写一份, MSBuild native buildsystem )。 • 负责从 CMakeLists.txt 生成本地构建系统构建规则文件的,称为生成器( generator )。 -G 选项:指定要用的生成器 • Linux 系统上的 CMake 默认用是 Unix Makefiles 生成器; Windows 系统默认是 Visual Studio 2019 生成器; MacOS 系统默认是 Xcode 生成器。0 码力 | 166 页 | 6.54 MB | 1 年前3
whats new in visual studioeditor [StackOverflow Developer Surveys] Free, open-source code editor Runs on Windows, macOS, and Linux C++ IntelliSense, debug & code browsing CMake, vcpkg and git integrations SSH/container/WSL remote linked for command-line builds Visual Studio integration • MSBuild & CMake support for Windows & Linux • Debugger integration for MSVC and Clang/LLVM Visit https://aka.ms/asan to learn more Announcing C++ dependency management with . vcpkg Open-source library manager for Windows, Linux, and macOS 1700+ popular open-source libraries available for installation • Built from source, on-demand0 码力 | 42 页 | 19.02 MB | 6 月前3
C++高性能并行编程与优化 - 课件 - 15 C++ 系列课:字符与字符串键(‘ \x1b’ ) • 127 表示 DEL 键(‘ \x7f’ )等 • 0~31 和 127 这些整数,就构成了 ASCII 码中控制字符的部分。 关于控制字符的一个冷知识 • 在 Linux 命令行中启动 cat 。 • 试试按 Ctrl+R , Ctrl+E , Ctrl+C 等一系列 组合键,看到出现了什么? • 可以看到显示的字符变成了 ^R ^E ^C 等… … • 这是 比较了 6 次 • “azazel” > “az” 因为长度 6 > 2 比较了 3 次 • “azazel” < “linux” 因为第一 ‘ 个字符 a’ < ‘l’ 比较了 1 次 • “azazel” > “application” ‘ 因为第二个字符 z’ > ‘p’ 的 char 类型的问题。 • 如何用 char 表示这么宽的字符?有很多种解决方案。 • 一种方案是:索性放弃 char ,改用 wchar_t 做字符类型 。 • wchar_t 在 Linux 上为 4 字节,完全足够表示 Unicode 这 0x000000~0x10FFFF 的范围,甚至还有 1 字节浪费 。 wchar_t 的普及 • 所以他们提议:以后用 const wchar_t0 码力 | 162 页 | 40.20 MB | 1 年前3
绕过conntrack,使用eBPF增强 IPVS优化K8s网络性能at PREROUTING chain • SNAT at POSTROUTING chain • Pros • Iptables is widely adopted in popular Linux distributions • Cons • O(N^2) in control plane / O(N) in data plane • Poor in scheduling algorithm support in eBPF verifier (Linux 4.14) • #param unroll • Size limitation of BPF program <= 4096 • Move SNAT allocate port loop into IPVS kernel module • Bounded loop support in Linux 5.3 • Size limitation limitation of BPF program is one million after Linux 5.2 Lessons from eBPF • Too strict check in eBPF verifier • Example: s64 bpf_csum_diff(__be32 * from, u32 from_size, __be32 * to, u32 to_size); pass0 码力 | 24 页 | 1.90 MB | 1 年前3
基于Rust-vmm实现Kubernetes运行时containerd-shim/busybox/docker-runc , /usr/bin/docker-runc /bin/bash /bad_init /proc/self/fd/ 4. Linux Kernel Patch Are those enough? NO https://landscape.cncf.io/category=container-runtime&format Virtual CPUs (vCPUs). rust-vmm • event-manager: abstractions for implementing event based systems. • linux-loader: parser and loader for vmlinux and bzImage images as well as some other helpers for kernel Demo virtio-fs block vm-memory acpi linux-loader kvm-ioctls vm-virtio vsock net VFIO APIC vhost Cloud Hypervisor KVM File System Device Driver Host Linux Kernel vCPU block Memory Guest VM containerd0 码力 | 27 页 | 34.17 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 01 学 C++ 从 CMake 学起位( 32 位时代过去了) 至少 2 核 4 线程(并行课…) 英伟达家显卡( GPU 专题) 软件要求: Visual Studio 2019 ( Windows 用户) GCC 9 及以上( Linux 用户) CMake 3.12 及以上(跨平台作业) Git 2.x (作业上传到 GitHub ) CUDA Toolkit 10.0 以上( GPU 专题) 关于作者 • 我是 Taichi 文件,加载到内存中空闲的位置,并且替换相应的“插桩”指向的地址为加载后的 地址,这个过程称为重定向。这样以后函数被调用就会跳转到动态加载的地址去。 • Windows :可执行文件同目录,其次是环境变量 %PATH% • Linux : ELF 格式可执行文件的 RPATH ,其次是 /usr/lib 等 运行时查找 编译时插入 CMake 中的静态库与动态库 • CMake 除了 add_executable 可以生成可执行文件外,还可以通过 也会被自动引用。 • 其他包的引用格式和文档参考: https://cmake.org/cmake/help/latest/module/FindBLAS.html 安装第三方库 - 包管理器 • Linux 可以用系统自带的包管理器(如 apt )安装 C++ 包。 • > pacman -S fmt • Windows 则没有自带的包管理器。因此可以用跨平台的 vcpkg : https://github0 码力 | 32 页 | 11.40 MB | 1 年前3
C++高性能并行编程与优化 - 课件 - 12 从计算机组成原理看 C 语言指针• 在主流操作系统上, size_t 和 uintptr_t 完全等价,虽然标准并没有强制要求这一点。 • 此外还有有符号的 ssize_t 和 intptr_t 等价,不过他是 Unix/Linux 系统特有的, Windows 上不存 在,因此请勿使用 ssize_t ,可以用 intptr_t 代替。 实验:各种标准化类型的大小 • 我们可以通过 sizeof(T) 获取 T 类型的字节数。 来从参数额外提供一个运行时变量。 字符组成的数组 • 如果不指定字符串长度,直接 %s 呢? • 直接使用 %s 会不断的读取字符串,直到遇到为 0 的 char 为止。 • 在 Linux 系统上居然还是能正常运行!这是因为 Linux 默认用 0 填充了栈, %s 读完 Hello 之 后正好碰到了默认填充的 0 所以没出错,但也 有可能会出错。而 Windows 上就会出现“ Hello 烫烫烫屯屯屯”之类的,因为0 码力 | 128 页 | 2.95 MB | 1 年前3
NativeScript 101NativeScript CLI Command Line Interface (CLI) o Use Command Prompt (Win) or Terminal (Mac, Linux) o Free, Part of open source project o Requires installation, local environment setup to build Apache Ant, Android SDK $ npm install –g nativescript NativeScript Sidekick o Tool for Mac/Windows/Linux o Cloud Builds o LiveSync, Debugging, Starter Kits o Plugins Management o Visual Studio Integration0 码力 | 90 页 | 40.11 MB | 1 年前3
THE FIRST EXPLORATION OF PROJECT SPARROWHacking The Ethical Hacker's Handbook, Fourth Edition» (ISBN : 9787302428671) & «Linux Hardening in Hostile Networks, First Edition» (ISBN: 9787115544384) Pure software developmement new-golden-age-for-computer-architecture/fulltext Source: https://www.zdnet.com/article/risc-v-the-linux-of-the-chip-world-is-starting-to- produce-technological-breakthroughs/ I. Background0 码力 | 68 页 | 13.14 MB | 1 年前3
共 27 条
- 1
- 2
- 3













