FRR编译

去github下载最新代码加压缩,进入到主目录:

进去我就找configure文件,找了半天没找到,百度搜素才发现,需要先执行 bootstrap.sh 真丢人。

1、bootstrap.sh

2、./configure CC=gcc

FRR编译_第1张图片

FRR依赖很多库

json-c

libelf(编译 clippy的时候需要,这个可以再编译frr之前,先编译)github 上有些源码不对,要找包含gelf.h头文件的那个目录

libyang(依赖cmakepcre2

libgRpc库,需要下载submodule的代码(Third_party下很多需要下载的库,否则会编译不过)

git clone https://github.com/grpc/grpc.git
cd grpc
git submodule update --init  

官网上有非常详细的编译步骤甚至是编译依赖库的介绍;

Cross-Compiling — FRR latest documentation

FRR的配置安装
 
 安装完相关库后:执行configure
 ./configure   --prefix=/usr  --includedir=\${prefix}/include  --bindir=\${prefix}/bin   --sbindir=\${prefix}/lib/frr   --libdir=\${prefix}/lib/frr --libexecdir=\${prefix}/lib/frr  --localstatedir=/var/run/frr  --sysconfdir=/etc/frr  --with-moduledir=\${prefix}/lib/frr/modules --with-libyang-pluginsdir=\${prefix}/lib/frr/libyang_plugins  --enable-configfile-mask=0640  --enable-logfile-mask=0640  --enable-snmp=agentx  --enable-multipath=64  --enable-user=frr   --enable-group=frr   --enable-vty-group=frrvty  --with-pkg-git-version  --with-pkg-extra-version=-MyOwnFRRVersion

 
 配置执行结果:
 config.status: executing libtool commands
configure: WARNING: unrecognized options: --with-libyang-pluginsdir

FRRouting configuration
------------------------------
FRR version             : 8.2.2-MyOwnFRRVersion
host operating system   : linux-gnu
source code location    : .
compiler                : gcc -std=gnu11
compiler flags          :  -g -O2   -fno-omit-frame-pointer -funwind-tables -Wall -Wextra -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wbad-function-cast -Wwrite-strings -Wundef -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -pthread 

make                    : make
linker flags            :     -ljson-c -lrt -lcap -lreadline -lm 
state file directory    : /var/run/frr
config file directory   : /etc/frr
module directory        : /usr/lib/frr/modules
script directory        : /etc/frr/scripts
user to run as          : frr
group to run as         : frr
group for vty sockets   : frrvty
config file mask        : 0640
log file mask           : 0640
zebra protobuf enabled  : no
vici socket path        : /var/run/charon.vici

The above user and group must have read/write access to the state file
directory and to the config files in the config file directory.
root@xxxx-xxxxxxxw:~/code/frr-frr-8.2.2# 
执行 make和make install
make
make install
根据官网的步骤安装配置文件
sudo install -m 775 -o frr -g frr -d /var/log/frr
sudo install -m 775 -o frr -g frrvty -d /etc/frr
sudo install -m 640 -o frr -g frrvty tools/etc/frr/vtysh.conf /etc/frr/vtysh.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/frr.conf /etc/frr/frr.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/daemons.conf /etc/frr/daemons.conf
sudo install -m 640 -o frr -g frr tools/etc/frr/daemons /etc/frr/daemons

sudo install -p -m 644 redhat/frr.service /usr/lib/systemd/system/frr.service
sudo install -p -m 755 redhat/frr.init /usr/lib/frr/frr

install -p -m 644 tools/frr.service /usr/lib/systemd/system/frr.service
    
第一条就报错
root@xxxxxxjllll:~/code/frr-frr-8.2.2# install -m 775 -o frr -g frr -d /var/log/frr
install: invalid user ‘frr’

原来是在编译前需要先添加 用户组
添加FRR用户和组

groupadd -r -g 92 frr
groupadd -r -g 85 frrvty
adduser --system --ingroup frr --home /var/run/frr/ \
   --gecos "FRR suite" --shell /sbin/nologin frr
usermod -a -G frrvty frr

sudo adduser --system --ingroup frr --home /var/run/frr/ --gecos "FRR suite" --shell /sbin/nologin frr

你可能感兴趣的:(liunx,linux)