从零开始源代码安装tnc@fhh项目软件

来源:互联网 发布:淘宝上守望先锋激活码 编辑:程序博客网 时间:2024/04/27 18:14

       最近开始接触可信接入技术,从网上搜到德国汉诺威应用科学与艺术大学开发了一版开源的基于TNC架构的可信接入框架,于是在github上找到他们的源码,从头开始安装。但这个项目目前已经停止更新了,它开发时用到了一些较老的库,我在编译时遇到各种问题,千辛万苦地搞了一周,总算解决了所有问题。现在将安装过程中碰到的问题和解决方案列举如下。

一、依赖的库

      先说明我的编译环境为ubuntu14.04, GCC版本4.8.4,要想完整安装tnc@fhh项目的所有功能需要用到以下几个库:

  • apache-log4cxx
  • xerces-c
  • TrouSers
  • libtnc
  • libssl-dev、libgtk2.0-dev、libxml2-dev
  • libboost-dev

       此外,还需要一些编译工具,有cmake、autoconf、automake、libtool等。

二、安装log4cxx

         由于log4cxx依赖apache的另外两个库,因此需要先安装libapr和libapr-util,其编译命令即一般的./configure-->make-->make install,只是需注意在configure时的选项。

  1. libapr的配置选项: ./configure,这里推荐默认位置安装,是为了之后使用cmake时能找到各个模块;
  2. libapr-util的配置选项:./configure  --with-apr=/usr/local/apr;
  3. log4cxx的配置选项:./configure --with-apr=/usr/local/apr  --with-apr-util=/usr/local/apr --with-charset=utf-8 --with-logchar=utf-8

       这里要注意修改一下源码,否则make时会报错,具体位置如下:

         src/main/cpp/inputstreamreader.cpp添加#include <string.h>

         src/main/cpp/socketoutputstream.cpp添加#include <string.h> 

         src/examples/cpp/console.cpp添加#include <string.h>;#include <stdio.h>;

         完了可以上网找一段log4cxx的c++代码测试一下。如果编译完执行时出错,记得修改/etc/ld.so.conf,添加动态库的路径,并sudo ldconfig。

三、安装xerces-c和TrouSers

         这里安装TrouSers时可能高版本的gcc会报错,我在一台较新的fedora上安装时碰到过,可惜没有记录错误信息,解决方法是按照报错记录找到对应的c文件,将buffer定义行的incline关键字注解掉。然后就能通过了,当然,gcc4.8.4没碰到这个问题。

四、安装libtnc

        可能在make之后make check测试时有一项显示失败,但这个错误可以忽略,并不影响后面的编译工作。 

五、安装tnc@fhh框架

       先解压源码包,在到目录下按照下面步骤来:

  1. mkdir ./build && cd build
  2. cmake  -DCOMPONENT=all   -DNAL=8021x  -DTPM=on ../
  3. make
  4. make install
  5. sudo ldconfig

       编译到某个地方会出现如下错误:

       /usr/local/lib/libtnc.a(libtnctncc.o): In function `libtnc_tncc_EndBatch':

       /libtnc-1.23/src/libtnc/libtnctncc.c:80: undefined reference to `xmlDocDumpFormatMemory'

       /libtnc-1.23/src/libtnc/libtnctncc.c:82: undefined reference to `xmlFree'

       ... ... ...

       这类错误是链接库的顺序不对造成的,将tncsim/CMakeFiles/tncsim.dir/link.txt的最后部分修改一下:

       原来:-o tncsim -rdynamic -lxml2/usr/local/lib/libtnc.a

       改后:-o tncsim -rdynamic  /usr/local/lib/libtnc.a -ldl -lxml2

       这里再加入dl库即可通过连接,这样就完成了框架的编译工作。

六、用tncsim验证

       可以用项目里本身开发的tncsim模拟器来验证框架能否工作,因为完整的能够应用到实际中的框架还需要安装修改过的freeradius才行,项目成员开发tncsim就是在不需要NAL层的情况下验证IMCV对,默认加载的模块在/etc/tnc/tncsim_config文件里,这里需要修改一下:

        IMV "exampleimv" /usr/local/lib/libexampleimv.so
       #IMV "dummyimv" /usr/local/lib/libdummyimv.so
       #IMV "hostscannerimv" /usr/local/lib/libhostscannerimv.so
       #IMV "platidimv" /usr/local/lib/libplatidimv.so
       #IMV "clamavimv" /usr/local/lib/libclamavimv.so

       IMC "exampleimc" /usr/local/lib/libexampleimc.so
       #IMC "dummyimc" /usr/local/lib/libdummyimc.so
       #IMC "hostscannerimc" /usr/local/lib/libhostscannerimc.so
       #IMC "platidimc" /usr/local/lib/libplatidimc.so
       #IMC "clamavimc" /usr/local/lib/libclamavimc.so

       因为如果用默认的platidimc/v模块需要真实的IMC/V模块,当然,我们目前还没有安装,只能用最简单的exampleimc/v来验证。进入之前创建的build/tncsim/目录下运行tncsim,可以看到详细的数据收发流程。P.S.数据是以xml语言传输的,应该是TNC组织定义的标准吧,有待验证。

总结

         好了,以上就是在这次安装过程中遇到的全部问题和解决方案,希望能对后来人有所帮助。最后把安装过程中看过的博客以及网站列出来,对前人的经验分享表示感谢。
http://blog.csdn.net/zqm0209/article/details/7032457

http://blog.csdn.net/fhxpp_27/article/details/8280024

http://trust.f4.hs-hannover.de/projects/tncatfhh.html

0 0
原创粉丝点击