libpcap交叉编译
分类: linux编译移植2012-06-11 16:58 283人阅读 评论(0) 收藏 举报
makefilelinuxreferenceflex
环境:ubuntu10.10 (以下是我在ubuntu中的操作步骤,在其他linux系统中应该也差不多,只是有些软件需不需要装的问题。根据提示安装即可,本人认为自己这个是装的最多最全的,可以参考) l 1.首先按照”交叉编译环境的配置“文章建立交叉编译环境。 2.下载libpcap-1.0.0.tar.gz源码。
3.解压libpcap-1.0.0.tar.gz: tar -xzvf libpcap-1.0.0.tar.gz.
cd libpcap-1.0.0 进入目录,修改confiugre文件,把下面两段注释掉 (利用查找功能找到相应段落,可不要一行一行找,会累死的)
#if test -z \&& test \= yes; then
# { { echo \error: pcap type not determined when cross-compiling; use --with-pcap=...\>&5
#echo \error: pcap type not determined when cross-compiling; use --with-pcap=...\>&2;} # { (exit 1); exit 1; }; } #fi .......
# if test $ac_cv_linux_vers = unknown ; then
# { { echo \error: cannot determine linux version when cross-compiling\>&5 #echo \error: cannot determine linux version when cross-compiling\>&2;} # { (exit 1); exit 1; }; } # fi
4. 确保你的系统已经安装了m4,flex和bison(sudo apt-get install bison,sudo apt-get install flex。在ubunru10.10中我是自己下载m4,flex和bison并安装的,安装方法在文件“ubuntu安装libpcap所需软件”里,而在fedora下系统已经默认装好这些了)
,然后执行./configure --host=arm-linux,这样就会使用arm-linux-gcc编译configure,生成Makefile 文件(系统能否找到arm-linux-gcc编译器的关键是确保将你之前配置的交叉编译器的路径加在PATH路径下并使之生效。详见“交叉编译环境配置”文章)
5. 修改Makefile的prefix项为prefix=/usr/local/arm/4.2.2-eabi/usr(此项是设置一个目录来放置你执行后产生的文件目录,要与你的交叉编译器放在同一目录下。比如我的交叉编译器都在/usr/local/arm/4.2.2-eabi/usr/bin目录下,所以我用上面的路径存放,生成的文件会放入相应的目录里以便交叉编译器在执行编译时能找到相应的头文件等),同时注意查看Makefile中的CC项,已经为arm-linux-gcc了。
6. 接下来make,make install,完成了libpcap的编译和安装,查看/usr/local/arm/4.2.2-eabi/usr/include,该目录下增加了三个pcap的文件库,同级目录的bin,lib,share等都会产生相应的文件。
7.接着就可以用arm-linux-gcc编译你自己的抓包程序了。例如:arm-linux-gcc -o arm1 test.c -lpcap,之后会产生一个以arm1为名字的可执行文件,将其移植到开发板上,利用./arm1来运行程序了(注意在超级用户下运行)。(我的libpcp文件下有可供测试的小程序,在一个叫tests的文件里。源文件即.c文件和生成的可执行程序都在里面)
交叉编译 libpcap
分类: linux2010-03-16 11:17 645人阅读 评论(2) 收藏 举报
yaccmakefilelinuxsystemcommandflex
1、解压libpcap-1.0.0.tar.gz,进入目录,修改confiugre文件,把下面两段注释掉 #if test -z \
# { { echo \--with-pcap=...\
#echo \--with-pcap=...\ # { (exit 1); exit 1; }; } #fi .......
# if test $ac_cv_linux_vers = unknown ; then
# { { echo \cross-compiling\
#echo \ # { (exit 1); exit 1; }; } # fi
2、./configure --host= arm_v5t_le 生成Makefile
./configure --host=arm_v5t_le
3、configure 就出错了,打印是
checking host system type ....invalid configuration 'arm-vet_le': machine 'arm_v5t_le' not recognized 解决方法
修改config.sub 把arm_v5t_le加上。
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | arm_v5t_le /
4、 有出错了 需要权限支持
configure: error: Your operating system's lex is insufficient to compile libpcap 解决方法 apt-get install flex
5、修改Makefile中prefix=$CROSS_COMPILE_PWD 6、接下来make,make install,完成了libpcap的编译和安装
7、编译的过程中可能出错 yacc -d grammar.y
make: yacc: Command not found
缺少yacc解析器 sudo apt-get install byacc
8、接着就可以编写你的抓包程序了。记得在用 arm_v5t_le 编译时加上 “-lpcap”选项