记录一下交叉编译tacacs_plus 服务的过程

编译过程中依赖libwrap.a,需要下载对应的源码,

标题获取源代码

1.下载tcp_wrappers_7.6.tar.gz 路径:http://www.linuxfromscratch.org/blfs/view/5.1/basicnet/tcpwrappers.html
2. 下载tacacs±F4.0.4.27a.tar.gz建议使用ftp客户端去下载
ftp://ftp.shrubbery.net/pub/tac_plus/tacacs±F4.0.4.27a.tar.gz

编译 tcp_wrappers_7.6.tar.gz

# 解压源码包
tar -xvzf tcp_wrappers_7.6.tar.gz
pwd
/home/allen/workspace/tacacs_build/tcp_wrappers_7.6# 修改Makefile 增加交叉编译的配置
REAL_DAEMON_DIR=/usr/sbin
CROSS_COMPILE_ROOT=/home/allen/workspace/toolchains/powerpc-e5500-linux-gnu_linux-3.12.50_binutils-2.25.1_gcc-5.2.0_glibc-2.19_32big
CROSS_COMPILE_PREFIX=$(CROSS_COMPILE_ROOT)/bin/powerpc-e5500-linux-gnu-
CC=$(CROSS_COMPILE_PREFIX)gcc
CFLAGS+=-Werror
CFLAGS+=-I$(CROSS_COMPILE_ROOT)
#修改Makefile 在linux字段中增加编译宏-DSYS_ERRLIST_DEFINED
linux:@make REAL_DAEMON_DIR=$(REAL_DAEMON_DIR) STYLE=$(STYLE) \LIBS= RANLIB=ranlib ARFLAGS=rv AUX_OBJ=setenv.o \NETGROUP= TLI= EXTRA_CFLAGS="-DBROKEN_SO_LINGER -DSYS_ERRLIST_DEFINED" all# 执行编译
make linux

最终生成的.a库和 bin文件就在当前的目录中。

编译tacacs±F4.0.4.27a

有了libwrap.a 库以后,可以开始编译tacacs 服务器端,这个时automake生成的工程,交叉编译比较简单

# 设置一下config.cache, 否则会在后面的配置过程中出现报错信息“checking whether setpgrp takes no argument... configure: error: cannot check setpgrp when cross compiling”
echo "ac_cv_func_setpgrp_void=yes" > config.cache
# 配置交叉编译工具链./configure --host=ppc-linux --prefix=/home/allen/workspace/tacacs_build/repo-tacac-plus \CC=/home/allen/workspace/toolchains/powerpc-e5500-linux-gnu_linux-3.12.50_binutils-2.25.1_gcc-5.2.0_glibc-2.19_32big/bin/powerpc-e5500-linux-gnu-gcc \CFLAGS=-I/home/allen/workspace/tacacs_build/tcp_wrappers_7.6 \LDFLAGS=-L/home/allen/workspace/tacacs_build/tcp_wrappers_7.6 \--config-cache
# 配置完成后,执行make &&make install

最后生成的二进制信息

../repo-tacac-plus/
├── bin
│   ├── tac_plus
│   └── tac_pwd
├── include
│   └── tacacs.h
├── lib
│   ├── libtacacs.a
│   ├── libtacacs.la
│   ├── libtacacs.so -> libtacacs.so.1.0.0
│   ├── libtacacs.so.1 -> libtacacs.so.1.0.0
│   └── libtacacs.so.1.0.0
├── share
│   ├── man
│   │   ├── man5
│   │   │   └── tac_plus.conf.5
│   │   └── man8
│   │       ├── tac_plus.8
│   │       └── tac_pwd.8
│   └── tacacs+
│       ├── do_auth.py
│       ├── tac_convert
│       └── users_guide8 directories, 14 files

终端设备上运行

  1. 创建配置脚本
    touch /etc/tacas_plus.conf
accounting file = /var/log/tac_plus.acctkey = testkey123user = testuser1 {global = cleartext "testpass123"service = ppp protocol = ip {addr=1.2.3.4}
}
user = testuser2 {global = cleartext "testpass123"service = ppp protocol = ip {addr=2.3.4.5}
}

启动tac_plus
tac_plus -C /etc/tac_plus.conf -G -g -d 512

登录验证server是否可用

服务器部署在192.168.21.135
使用tacc 参数匹配上面对应的key,service, protocol 信息

[root]# ./tacc -TRA -u testuser1 -p testpass123 -s 192.168.21.135  -r 192.168.21.135 -k testkey123 \
-S ppp -P ip -y /dev/pts/3
Authentication OK
Authorization OK: (Service granted)
Accounting: START OK
Accounting: STOP OK

查看account记录

# cat /var/log/tac_plus.acct
Aug 26 03:31:16 192.168.21.133  testuser1       /dev/pts/3      192.168.21.133  start   start_time=1598439430   task_id=5496    service=ppp     protocol=ip
Aug 26 03:31:16 192.168.21.133  testuser1       /dev/pts/3      192.168.21.133  stop    stop_time=1598439430    task_id=5496
[root@23-SLOT1:/root]#

交叉编译tacacs_plus相关推荐

  1. Golang的交叉编译问题

    参考:Golang交叉编译各个平台的二进制文件 - Go语言中文网 - Golang中文社区 (studygolang.com).也谈Go的可移植性 | Tony Bai 今天准备将一个在Mac上开发 ...

  2. Linux 交叉编译简介

    Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...

  3. TVM交叉编译和远程RPC

    TVM交叉编译和远程RPC 本文介绍了TVM中使用RPC的交叉编译和远程设备执行. 使用交叉编译和RPC,可以在本地计算机上编译程序,然后在远程设备上运行它.当远程设备资源受到限制时(如Raspber ...

  4. 用TensorRT针对AArch64用户的交叉编译示例

    用TensorRT针对AArch64用户的交叉编译示例 以下介绍如何在x86_64linux下为AArch64 QNX和Linux平台交叉编译TensorRT示例. 2.1. Prerequisite ...

  5. Go 学习笔记(37)— 标准命令(go build 跨平台编译、交叉编译、go clean、go run、go fmt、go install、go get)

    1. 标准命令简述 Go 本身包含来大量用于处理 Go 程序的命令和工具. 命令 作用 build 用于编译指定的代码包或 Go 语言源码文件.命令源码文件会被编译成可执行文件,并存放到命令执行的目录 ...

  6. linux wifi-tools,Linux下WiFi工具wireless_tools交叉编译,及其支持生成iwconfig使用的内核配置...

    内核的配置: General setup  ---> Kernel compression mode (LZMA)  --->LZMA [*] Networking support  -- ...

  7. Cmake 交叉编译

    转载自 http://zhixinliu.com/2016/02/01/2016-02-01-cmake-cross-compile/ CMake交叉编译 CMake的使用,以及如何将一个项目移植到A ...

  8. Ubuntu 8.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解

    Linux版本:Ubuntu8.04 内核版本:Linux 2.6.24 交叉编译器版本:arm-linux-gcc-3.4.1 交叉编译器下载链接: https://share.weiyun.com ...

  9. Ubuntu上通过android toolchain交叉编译Valgrind操作步骤

    关于Valgrind的介绍可以参考:https://blog.csdn.net/fengbingchun/article/details/50196189. 这里介绍下在Ubuntu 16.04上通过 ...

最新文章

  1. Conversations
  2. Android UI开发第三十九篇——Tab界面实现汇总及比较
  3. linux创建2g文件,嵌入式 创建一个2G的空文件(Linux命令dd)
  4. 睡眠分期matlab代码,非接触式睡眠分期方法与流程
  5. CSS的Border属性 属性 边框 可以 定义 宽度 颜色 CSS solid 类型 文本
  6. 防止电脑自动锁屏(Windows系统)
  7. HDU6638 Snowy Smile
  8. 一般个域名可以有几个IP地址,IP地址可以绑定几个域名呢
  9. 电脑拆机(华硕FL5900)+光驱改固态
  10. 杨家将杨业四子杨延辉子嗣传人世代居住松滋
  11. 家用计算机如何连无线网,电脑上怎么连接wifi_怎样连接自己家的wifi-win7之家
  12. php批量添加水印图片大小,解析php中两种缩放图片的函数,为图片添加水印
  13. Android Scroller
  14. sa-token进阶
  15. windows7 cat ‘t find recovert.data
  16. 平安金融卫士 互联网理财“安全第一”
  17. Android : 破解apk
  18. Node.js fs模块 删除非空目录
  19. 【ansys workbench】7.装配体分析基本思路讲解
  20. Talib.ADX指标详解

热门文章

  1. 一个简单的Android计步器
  2. 画论09 李嗣真《续画品录》
  3. {UserDetailsService returned null, which is an interface contract violation}
  4. 2023高压电工模拟一[安考星]
  5. OrgChart页面模仿编程简单记录
  6. 学习HTML过程中的笔记
  7. a标签中href=的几种跳转方法
  8. .MD语法入门,教你写好readme文档
  9. javaweb实现停车场收费管理系统
  10. python生日快乐不同的人代码_祝我生日快乐!