我正在尝试编译一个自定义程序包,它在很大程度上依赖于libcurl和pcap,在我的机器上它工作得很好,但是当我尝试使用工具链编译它时我得到了这个错误:
$ /home/kavastudios/sites/proC/SDK/OpenWrt-Toolchain-ar71xx-for-mips_34kc-gcc-4.8-linaro_uClibc-0.9.33.2/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-uclibc-gcc airhog.c -o airhogfull -lpcap -lcurl
mips-openwrt-linux-uclibc-gcc.bin: warning: environment variable 'STAGING_DIR' not defined
In file included from /usr/include/curl/curl.h:35:0,
from airhog.c:16:
/usr/include/curl/curlrules.h:142:3: error: size of array '__curl_rule_01__' is negative
__curl_rule_01__
^
/usr/include/curl/curlrules.h:152:3: error: size of array '__curl_rule_02__' is negative
__curl_rule_02__
^
如果我编译它使用curl删除所有代码(只留下pcap)我得到这个错误:
cannot find -lpcap
collect2: error: ld returned 1 exit status
阅读了很多帖后,我的猜测是我需要交叉编译pcap和curl然后在尝试编译我的脚本时引用它们,但我完全迷失了如何去做。
如果你能给我一些线索,我真的很感激:
正确设置分段目录(我一直尝试使用PATH / STAGING_DIR变量但没有成功)
如何编译curl / pcap库(在编译我的脚本时使用,而不是用那些替换我机器中使用的库结束)
我在编译脚本时应该包含哪些标志或命令。
我正在使用Ubuntu 14.04
感谢。
答案 0 :(得分:0)
我不知道你对你的剧本做了什么,但我可以回答你的第二个问题。
(将arm-none-linux-gnueabi替换为您的工具链)
交叉编译libpcap
1)首先配置libpcap,如下所示
./configure --prefix=<install/path> --host=arm-none-linux-gnueabi --with-pcap=linux
2)然后编译它
make
3)最后安装
make install
交叉编译libcurl
1)配置
./configure --prefix=<install/path> --host=arm-none-linux-gnueabi
然后按照步骤2&amp; 3 libpcap
如果您需要其他功能,则必须交叉编译这些依赖项。