一、前言
我是下载的压缩包dibbler-RELEASE1.0.1.zip,然后只需要用dibbler-sever部分,其他部分没仔细看,但是应该大差不差。
二、需求
- 要单独编译server端
- 要交叉编译
- 只需要dhcpv6功能,尽可能阉割
- 要求编译静态库
- 修改配置文件路径
需求一:
直接运行 make server 就可以(客户端等同理)
需求二:
./configure CC=/xxx/xxx/xx/gcc CXX=/xx/xx/xx/xx/g++ --host=arm (我需要编译到arm平台,其他按需填写)
需求三:
我是把 configure.ac 里面有很多功能关掉了,比如:
### debugging ##################
AC_ARG_ENABLE(debug,
[ --enable-debug Turn on debugging (default: no)],
[ case "${enableval}" in
yes)
debug=yes
;;
no)
debug=no
;;
*)
AC_MSG_ERROR(bad value ${enableval} for --enable-debug)
;;
esac],
[ debug=no ] //这个功能如果不需要设置成no就可以
)
修改完成后记得重新生成 cofigure 文件。
ps: 理论上能阉割更多功能,因为作者说模块是独立的,但我没试。
需求四:
dibbler设计是用libtool工具管理库的,我实在不知道怎么去设置默认链接静态库而不是动态,就采取了比较野蛮的方式,如下:
在makefile文件生成后直接修改这一变量:
CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) -all-static $(AM_CXXFLAGS) \
$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
加上了-all-static(要在编译器后面加)
需求四参考文章C++学习(三八四)libtool动态库 静态库_libtool静态链接libstdc++-CSDN博客
需求五:
直接改了Port-linux/Misc/Portable.h 里面的 #define SRVCONF_FILE "/etc/dibbler/server.conf"