小编gna*_*nac的帖子

CMake 命令行定义不会延续到工具链文件

我有一个 cmake 交叉编译器工具链文件,缩写为:

set(CMAKE_SYSTEM_NAME Linux)
if( DEFINED TC_PATH )
    message( STATUS " TC_PATH IS defined. ${TC_PATH}" )
else()
    message( FATAL_ERROR " TC_PATH not defined." )
endif()

set(CMAKE_C_COMPILER ${TC_PATH}/usr/bin/i586-linux/i586-linux-gcc )
set(CMAKE_CXX_COMPILER ${TC_PATH}/usr/bin/i586-linux/i586-linux-g++ )
set(CMAKE_LINKER ${TC_PATH}/usr/bin/i586-linux/i586-linux-ld )
Run Code Online (Sandbox Code Playgroud)

我调用 cmake,设置 TC_PATH 以及工具链文件:

~/CMakeTest/output $ cmake -DTC_PATH:PATH=/opt/toolchain -DCMAKE_TOOLCHAIN_FILE=../toolchain.cmake ../
Run Code Online (Sandbox Code Playgroud)

看来 cmake 正在多次调用工具链文件。在前两次,TC_PATH 检查成功,但后来,在识别编译器后,它抛出错误:

--  TC_PATH IS defined. /opt/toolchain
--  TC_PATH IS defined. /opt/toolchain
-- The C compiler identification is GNU 4.9.1
-- The CXX compiler identification is GNU 4.9.1
-- Check for working C …
Run Code Online (Sandbox Code Playgroud)

c++ cmake cross-compiling

5
推荐指数
1
解决办法
1909
查看次数

使用 ip route add 向多台设备添加组播路由

TLDR:有没有办法使用“ip route”为多个 NIC 添加多播路由?

我们有软件将绑定到不同 NICS 上不同 IP 地址的两个套接字连接到两个单独的多播组,例如,套接字 1 绑定到 192.168.0.2 并加入多播组 233.255.10.1,而套接字 2 绑定到 10.57.31.2 并加入到多播组 239.255.100.1。

我们目前正在使用 bash 脚本(Linux 内核 3.14.39)使用路由在两个网络接口上设置多播路由,例如

route add -net 224.0.0.0 netmask 240.0.0.0 eth0
route add -net 224.0.0.0 netmask 240.0.0.0 eth1
Run Code Online (Sandbox Code Playgroud)

并通过 route -n 验证

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
224.0.0.0       0.0.0.0         240.0.0.0       U     0      0        0 eth0
224.0.0.0       0.0.0.0         240.0.0.0       U     0      0        0 eth1
Run Code Online (Sandbox Code Playgroud)

我最近读到该路由已弃用/过时,我们应该改用 ip route,例如

ip route add 224.0.0.0/4 dev eth0
ip route add 224.0.0.0/4 dev …
Run Code Online (Sandbox Code Playgroud)

linux routing multicast iproute

5
推荐指数
0
解决办法
2684
查看次数

标签 统计

c++ ×1

cmake ×1

cross-compiling ×1

iproute ×1

linux ×1

multicast ×1

routing ×1