VLink 2.0.0
A high-performance communication middleware
载入中...
搜索中...
未找到
  1. 环境变量参考

本章列出 VLink **运行时**读取的环境变量。数据来源:对源码 Utils::get_env("VLINK_*") 调用的完整扫描(截至当前提交)。

所有 VLink 专有环境变量以 VLINK_ 前缀开头。vlink-check env 会按编译时启用的模块(VLINK_SUPPORT_* 宏)和 CLI 子工具(VLINK_ENABLE_CLI_*)动态裁剪输出:模块未编译则对应私有 env 不会展示(例如未启用 Zenoh 时不列 VLINK_ZENOH_*、未启用 SHM2 时不列 VLINK_SHM2_*)。若要确认某变量是否被使用,最权威的方法是搜索源码 Utils::get_env("<NAME>")。参见 13-cli-tools.md


目录

  1. 核心运行时环境变量
  2. 日志控制环境变量
  3. 发现与诊断环境变量
  4. DDS 传输环境变量
  5. SHM 传输环境变量
  6. 其他传输后端环境变量
  7. Bag 录制环境变量
  8. Bench 工具环境变量
  9. 外部依赖环境变量
  10. 交叉编译专用环境变量
  11. 示例应用中的自定义环境变量
  12. 设置方式

核心运行时环境变量

变量名 类型 说明
VLINK_URL_PLUGINS 插件名列表 传输后端插件基础名(不含路径、lib 前缀和 .so 后缀),**分号分隔**。vlink- 前缀可省略。
VLINK_SCHEMA_PLUGIN 路径/插件名 SchemaPluginInterface 插件共享库路径或插件基础名
VLINK_PROTO_DIR 目录路径 .proto 搜索目录(由 SchemaPluginBase 实现主动读取时生效)
VLINK_FBS_DIR 目录路径 .fbs 搜索目录(同上)
VLINK_PLUGIN_DIR 目录路径 插件共享库搜索目录
VLINK_TMP_DIR 目录路径 临时文件目录
VLINK_LOCK_DIR 目录路径 锁文件目录
VLINK_URL_REMAP 文件路径 URL 重映射 JSON 文件路径(子串匹配,详见 传输后端 7.7
VLINK_INTRA_BIND 字符串 把所有 intra:// URL 重定向到其他 scheme(值为 shmdds 等;源码 src/impl/url.cc:392);不同于 VLINK_DDS_BIND 的"仅 DDS 家族互转"语义
VLINK_QOS_CONFIG 文件路径 QoS 配置文件路径
# 设置多个传输后端插件(分号分隔,只写基础名,不含 lib 前缀和 .so 后缀)
# Plugin::load() 会自动添加平台前缀/后缀(如 lib*.so),并在 search_paths 中查找
export VLINK_URL_PLUGINS="custom-transport;my_plugin"
# 指定 proto 文件目录
export VLINK_PROTO_DIR=/opt/vlink/proto
# 指定 fbs 文件目录
export VLINK_FBS_DIR=/opt/vlink/fbs
# 指定 schema 插件(可写基础名或共享库路径)
export VLINK_SCHEMA_PLUGIN=my_schema_plugin

日志控制环境变量

VLink 内置日志系统(vlink::Logger)支持通过环境变量控制日志行为,无需修改代码。

变量名 类型 说明
VLINK_LOG_LEVEL 数字 全局日志级别(0=TRACE, 1=DEBUG, 2=INFO, 3=WARN, 4=ERROR, 5=FATAL, 6=OFF)
VLINK_LOG_CONSOLE_LEVEL 数字 控制台日志级别,覆盖全局级别
VLINK_LOG_FILE_LEVEL 数字 文件日志级别,覆盖全局级别
VLINK_LOG_DIR 目录路径 日志文件存储目录
VLINK_LOG_CONSOLE_UNORDER 1/0 启用非同步控制台输出(性能更好)
VLINK_LOG_CONSOLE_FMT 1/0 是否启用扩展控制台格式输出
VLINK_LOG_ENABLE_UTC 1/0 使用 UTC 时间戳
VLINK_LOG_MAX_SIZE 数字 单个日志文件最大大小(**字节**,超过后轮转;默认 10 * 1024 * 1024 = 10 MiB)
VLINK_LOG_MAX_COUNT 数字 日志文件最大保留数量
VLINK_LOG_FLUSH_DELAY 数字 日志刷新延迟(毫秒)
VLINK_LOG_PLUGIN 插件名 自定义日志插件基础名(不含路径、lib 前缀和 .so 后缀)
VLINK_LOG_STORE_STRATEGY 1/0 是否启用备用文件存储策略(主要影响 spdlog 文件 sink)
VLINK_LOG_OPEN_APPEND 1/0 程序启动时追加之前的日志
VLINK_LOG_BLOCK_SYNC 1/0 队列满时阻塞用户线程直到消费完成
VLINK_LOG_WRITE_DEPTH 数字 日志后端写入队列深度

日志级别数值对应

数值 级别 说明
0 TRACE 最细粒度跟踪日志
1 DEBUG 调试信息
2 INFO 一般信息(默认)
3 WARN 警告
4 ERROR 错误
5 FATAL 致命错误
6 OFF 完全关闭日志输出
# 只输出 warn 及以上级别日志
export VLINK_LOG_LEVEL=3
# 控制台仅显示 error,文件记录全部
export VLINK_LOG_CONSOLE_LEVEL=4
export VLINK_LOG_FILE_LEVEL=0
# 设置日志输出目录
export VLINK_LOG_DIR=/var/log/vlink

发现与诊断环境变量

变量名 类型 默认 说明
VLINK_DISCOVER_DISABLE 1/0 0 =1 时禁用全局 DiscoveryReporter 单例
VLINK_DISCOVER_NATIVE 1/0 0 =1 时把组播接口绑定到 127.0.0.1,仅本机可收到
VLINK_PROFILER_ENABLE 1/0 0 启用 CpuProfiler(编译宏 VLINK_PROFILER_DEFAULT_STATE 控制默认值)
# 禁用发现(减少 UDP 广播开销)
export VLINK_DISCOVER_DISABLE=1
# 仅发现本机节点
export VLINK_DISCOVER_NATIVE=1
# 启用 CPU 性能分析
export VLINK_PROFILER_ENABLE=1

DDS 传输环境变量

以下变量影响 dds://ddsc://ddsr://ddst:// 传输后端(传输后端详细说明参见 07-transport.md)。

**说明**:这些变量由各 DDS backend 工厂和 URL 解析路径分别读取,是否生效取决于当前实际启用的 DDS 实现(dds / ddsc / ddsr / ddst)。其中 VLINK_DDS_DOMAIN 会作为默认 domain 入口,VLINK_DDS_BIND 用于 URL 绑定/重写;若需要最直接、最可见的行为控制,仍建议优先使用 URL 查询参数或显式 Conf 字段。

变量名 类型 说明
VLINK_DDS_DOMAIN 数字 DDS Domain ID
VLINK_DDS_IP IP 地址 DDS 单播 IP 地址(多网卡时必设)
VLINK_DDS_IP_FILTER 1/0 启用 IP 过滤,仅使用当前可用地址
VLINK_DDS_MULTICAST_IP IP 地址 DDS 组播 IP 地址
VLINK_DDS_PEER 字符串 DDS 对等端配置
VLINK_DDS_BUF 数字 DDS 缓冲区大小
VLINK_DDS_MTU 数字 DDS 传输层最大消息大小(MTU)
VLINK_DDS_UDP 字符串 DDS UDP 传输配置
VLINK_DDS_TCP 字符串 DDS TCP 传输配置
VLINK_DDS_SHM 字符串 DDS 共享内存传输配置
VLINK_DDS_LESS_MEMORY 1/0 DDS 低内存使用模式
VLINK_DDS_DEBUG 1/0 启用 DDS 调试日志
VLINK_DDS_BIND 字符串 把所有 dds:// / ddsf:// URL 重定向到指定 DDS 变体。可选值:ddsddsf(均指 Fast-DDS;ddsf 是 URL 前缀层面对 dds 的别名)、ddsc(CycloneDDS)、ddsr(RTI Connext)、ddst(TravoDDS)
VLINK_DDS_EVENT_QOS 字符串 DDS Event 模型 QoS 配置
VLINK_DDS_METHOD_QOS 字符串 DDS Method 模型 QoS 配置
VLINK_DDS_FIELD_QOS 字符串 DDS Field 模型 QoS 配置
VLINK_FASTDDS_QOS_FILE 文件路径 FastDDS QoS XML 配置文件路径
VLINK_CYCLONEDDS_URI URI CycloneDDS 配置 URI
VLINK_TRAVODDS_QOS_FILE 文件路径 TravoDDS(ddst://)QoS XML 配置文件路径
# 将所有 dds:// 节点切换到 CycloneDDS 实现
export VLINK_DDS_BIND=ddsc
# 启用 DDS 调试日志
export VLINK_DDS_DEBUG=1
# 指定 FastDDS QoS 文件
export VLINK_FASTDDS_QOS_FILE=/etc/vlink/fastdds_qos.xml

SHM 传输环境变量

变量名 类型 说明
VLINK_SHM_DEBUG 1/0 启用 shm://(Iceoryx)调试日志
VLINK_SHM_DEPTH 数字 shm:// 传输缓冲深度
VLINK_SHM2_DEBUG 1/0 启用 shm2://(Iceoryx2)调试日志
VLINK_SHM2_DEPTH 数字 shm2:// 缓冲深度
VLINK_SHM2_CONFIG 文件路径 Iceoryx2 配置文件路径
VLINK_SHM2_NOTIFY_EVERY 数字 shm2:// 发布端每隔 N 条消息触发一次 notify(默认 1,即每条都通知;调大可批量唤醒消费者,降低 syscall 频率)

外部依赖环境变量

Iceoryx 外部环境变量

Iceoryx 传输依赖 SHM 守护进程(**推荐 vlink-proxy -c 内嵌启动**,它默认 -l 2(Middle,等价 proxy/etc/proxy_roudi.toml,7 档分级 chunk);若需要重载/点云载荷谱可 -l 3(High,8 档,等价 proxy_roudi_large.toml),轻量端侧 -l 1(Low,6 档),并自带远程监控能力——详见 16-proxy.md)。如果你单独跑 iox-roudi,其配置通过以下变量:

变量名 默认值 说明
IOX_ROUDI_CONFIG 空(内置默认值) Iceoryx RouDi 配置 TOML 文件路径
IOX_RUNTIME_PATH /tmp Iceoryx 运行时 Unix domain socket 路径
IOX_LOG_LEVEL Error Iceoryx 内部日志级别

其他传输后端环境变量

zenoh://

变量名 类型 说明
VLINK_ZENOH_CONFIG 文件路径 Zenoh JSON5 配置文件路径
VLINK_ZENOH_DOMAIN 数字 Zenoh Domain ID
VLINK_ZENOH_MODE 字符串 运行模式(默认 peer
VLINK_ZENOH_IP IP 地址 绑定 IP 地址
VLINK_ZENOH_PEER 字符串 对等端配置
VLINK_ZENOH_LISTEN 字符串 监听配置
VLINK_ZENOH_MULTICAST IP 地址 组播地址(默认 239.255.0.100
VLINK_ZENOH_MULTICAST_IF 字符串 组播网卡
VLINK_ZENOH_MULTICAST_TTL 数字 组播 TTL
VLINK_ZENOH_GOSSIP 1/0 启用 Gossip 发现(默认 1)
VLINK_ZENOH_RX_BUF 数字 接收缓冲区大小
VLINK_ZENOH_MAX_MSG 数字 最大消息大小
VLINK_ZENOH_TX_QUEUE_DATA 数字 数据发送队列深度
VLINK_ZENOH_TX_QUEUE_RT 数字 实时发送队列深度
VLINK_ZENOH_LOWLATENCY 1/0 低延迟模式(默认 0)
VLINK_ZENOH_QOS 1/0 QoS 启用(默认 1)
VLINK_ZENOH_COMPRESSION 1/0 压缩启用(默认 0)
VLINK_ZENOH_TIMESTAMPS 1/0 时间戳启用(默认 0)
VLINK_ZENOH_EVENT_QOS 字符串 Event 模型 QoS 配置
VLINK_ZENOH_METHOD_QOS 字符串 Method 模型 QoS 配置
VLINK_ZENOH_FIELD_QOS 字符串 Field 模型 QoS 配置
VLINK_ZENOH_BATCH_ENABLED true/false 是否启用批量发送(默认 true
VLINK_ZENOH_BATCH_TIME_LIMIT_MS 数字 批量聚合时间窗(毫秒,默认 1
VLINK_ZENOH_ALLOWED_LOCALITY 字符串 允许的 locality(local=仅本会话 / remote=仅远端 / 其他=任意;默认 any,需 Zenoh Z_FEATURE_UNSTABLE_API
VLINK_ZENOH_SHM 1/0 启用 Zenoh 共享内存(默认 0,仅 zenoh-c 且编译期带 Z_FEATURE_SHARED_MEMORY + Z_FEATURE_UNSTABLE_API 时生效)
VLINK_ZENOH_SHM_MODE 字符串 SHM 初始化模式:init(默认,立即建池)/ lazy(首次使用时建池)
VLINK_ZENOH_SHM_SIZE 字节数 SHM 传输池大小,支持 B/K/M/G 后缀(写入 transport/shared_memory/transport_optimization/pool_size
VLINK_ZENOH_SHM_THRESHOLD 字节数 Zenoh 自动 SHM 提升阈值(写入 transport/shared_memory/transport_optimization/message_size_threshold
VLINK_ZENOH_SHM_LOAN_THRESHOLD 字节数 VLink loan(size) 走 Zenoh SHM 的最小尺寸(默认 8192,低于此值回退到堆 Bytes::create),支持 B/K/M/G 后缀
VLINK_ZENOH_SHM_BLOCKING 1/0 1/true 时 SHM 池满时阻塞等待 GC + defrag,否则非阻塞失败(默认 0
export VLINK_ZENOH_CONFIG=/etc/vlink/zenoh.json5
export VLINK_ZENOH_MODE=client
export VLINK_ZENOH_PEER=tcp/192.168.1.100:7447
export VLINK_ZENOH_SHM=1
export VLINK_ZENOH_SHM_SIZE=64M

mqtt://

变量名 类型 默认值 说明
VLINK_MQTT_BROKER URI tcp://localhost:1883 MQTT Broker 连接 URI
VLINK_MQTT_CLIENT_ID 字符串 vlink_mqtt MQTT 客户端 ID 前缀
VLINK_MQTT_DOMAIN 数字 0 MQTT Domain ID
VLINK_MQTT_QOS 数字 1 MQTT QoS 级别
VLINK_MQTT_KEEPALIVE 数字 60 MQTT 心跳保活间隔(秒)
export VLINK_MQTT_BROKER=tcp://192.168.1.100:1883
export VLINK_MQTT_CLIENT_ID=my_app
export VLINK_MQTT_KEEPALIVE=30

someip://

变量名 类型 说明
VLINK_SOMEIP_CFG 文件路径 SOME/IP (vsomeip) 配置文件路径
export VLINK_SOMEIP_CFG=/etc/vlink/vsomeip.json

SSL/TLS 环境变量

以下变量用于配置传输层 SSL/TLS 加密(如 mqtt:// 后端的 TLS 连接)。

变量名 类型 说明
VLINK_SSL_VERIFY 1/0 是否验证服务器证书
VLINK_SSL_CA 文件路径 CA 证书文件路径
VLINK_SSL_CERT 文件路径 客户端证书文件路径
VLINK_SSL_KEY 文件路径 客户端私钥文件路径
VLINK_SSL_KEY_PASS 字符串 私钥密码
VLINK_SSL_SNI 字符串 TLS SNI(Server Name Indication)主机名
VLINK_SSL_CIPHERS 字符串 允许的 TLS 密码套件列表
export VLINK_SSL_CA=/etc/certs/ca.pem
export VLINK_SSL_CERT=/etc/certs/client.pem
export VLINK_SSL_KEY=/etc/certs/client-key.pem
export VLINK_SSL_VERIFY=1

外部 DDS 环境变量

变量名 说明
FASTDDS_DEFAULT_PROFILES_FILE FastDDS XML Profile 文件路径
FASTDDS_BUILTIN_TRANSPORTS 覆盖内置传输层(LARGE_DATASHMUDPv4 等)
FASTDDS_STATISTICS 启用 FastDDS 统计模块
CYCLONEDDS_URI CycloneDDS XML 配置文件 URI
VSOMEIP_CONFIGURATION vsomeip JSON 配置文件路径
VSOMEIP_APPLICATION_NAME vsomeip 应用名称

Bag 录制环境变量

录制/回放 API 详细说明参见 12-bag-recording.md;CLI 工具参见 13-cli-tools.md

变量名 类型 说明
VLINK_BAG_PATH 文件路径 Bag 录制文件路径,设置后启用全局 BagWriter(参见 BagWriter::global_get()
VLINK_BAG_TAG 字符串 录制会话标签名
# 启用全局录制
export VLINK_BAG_PATH=/tmp/recording.vdb
export VLINK_BAG_TAG=test_session_01

Bench 工具环境变量

vlink-benchprocess 模式下生效(由 cli/bench/bench.cc:78-111 读取),用于覆盖子进程协调超时。

变量名 类型 默认值(毫秒) 说明
VLINK_BENCH_READY_TIMEOUT_MS 数字 30000 子进程进入 ready 状态的最大等待时间
VLINK_BENCH_START_TIMEOUT_MS 数字 15000 同步启动信号下发后子进程开始测量的最大等待时间
VLINK_BENCH_MEASURE_BUFFER_MS 数字 10000 测量窗口结束后留给样本回收的额外缓冲
VLINK_BENCH_CLEANUP_TIMEOUT_MS 数字 3000 给子进程优雅退出的时间,超时后强杀

交叉编译专用环境变量

以下变量仅在 CMake 配置阶段读取,对运行时无影响。

变量名 适用工具链 说明
CROSS_COMPILE_PREFIX Linux aarch64 交叉编译工具链前缀(如 aarch64-linux-gnu-
CC / CXX Linux 显式指定 C/C++ 编译器路径
LINUX_INSTALL_PREFIX Linux 目标 sysroot 安装前缀
SYSROOT Linux (Yocto) Yocto sysroot 路径
ANDROID_NDK Android Android NDK 根目录(**必须设置**)
ANDROID_INSTALL_PREFIX Android Android 目标平台的依赖库安装前缀
QNX_HOST QNX QNX SDP host 工具目录(**必须设置**)
QNX_TARGET QNX QNX SDP target 库目录(**必须设置**)
QNX_INSTALL_PREFIX QNX 自定义安装前缀
OE_CMAKE_TOOLCHAIN_FILE Yocto Yocto SDK 生成的 CMake 工具链文件

示例应用中的自定义环境变量

VLink 官方示例通过 vlink::Utils::get_env() 读取以下自定义环境变量:

环境变量加载流程

环境变量加载流程

helloworld 示例

变量名 默认值 说明
METHOD_URL 直接指定 Method URL,覆盖 METHOD_TRANSPORT 逻辑
EVENT_URL 直接指定 Event URL,覆盖 EVENT_TRANSPORT 逻辑
METHOD_TRANSPORT dds 选择 Method 传输后端(稳定:dds/ddsc/shm;Beta:someip/fdbus/qnx
EVENT_TRANSPORT dds 选择 Event 传输后端(同上)
# 使用 shm:// 传输运行 helloworld
export METHOD_TRANSPORT=shm
export EVENT_TRANSPORT=shm
./example_helloworld_server &
./example_helloworld_client sub

ping_pong 示例

变量名 默认值 说明
PING_URL 直接指定 Ping 发布 URL
PONG_URL 直接指定 Pong 发布 URL
PING_TRANSPORT dds Ping 传输后端
PONG_TRANSPORT dds Pong 传输后端

设置方式

临时设置(当前 Shell 会话)

export VLINK_LOG_LEVEL=1
./my_vlink_app

单次命令前缀

VLINK_LOG_LEVEL=3 VLINK_DDS_BIND=ddsc ./my_vlink_app

持久设置(Shell 配置文件)

echo 'export VLINK_LOG_LEVEL=2' >> ~/.bashrc
source ~/.bashrc

systemd Service 文件

[Unit]
Description=My VLink Application
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/my_vlink_app
Environment="VLINK_LOG_LEVEL=3"
Environment="VLINK_LOG_DIR=/var/log/vlink"
Environment="VLINK_DDS_IP=192.168.1.100"
Restart=on-failure
[Install]
WantedBy=multi-user.target

Docker / 容器环境

ENV VLINK_LOG_LEVEL=2
ENV VLINK_DDS_BIND=ddsc
ENV VLINK_LOG_DIR=/var/log/vlink
docker run \
-e VLINK_LOG_LEVEL=1 \
-e VLINK_DDS_IP=192.168.1.100 \
my_vlink_image

环境变量快速查看

使用 vlink-check env 可查看 VLink 内置清单中环境变量的当前状态。清单项按编译时启用的模块/子工具裁剪(例如未启用 ZENOH 模块时不会列出 VLINK_ZENOH_*),未列出不代表 source 不读它——以源码 Utils::get_env("<NAME>") 为准:

# 查看内置清单中的变量状态
vlink-check env
# 仅查看已设置的环境变量
vlink-check env -b

如需最权威的答案,请以源码 Utils::get_env("VLINK_*") 调用处为准。