编译

时间:2015-08-06 07:16:15

标签: c cross-compiling libcurl libpcap openwrt

我正在尝试编译一个自定义程序包,它在很大程度上依赖于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然后在尝试编译我的脚本时引用它们,但我完全迷失了如何去做。

如果你能给我一些线索,我真的很感激:

  1. 正确设置分段目录(我一直尝试使用PATH / STAGING_DIR变量但没有成功)

  2. 如何编译curl / pcap库(在编译我的脚本时使用,而不是用那些替换我机器中使用的库结束)

  3. 我在编译脚本时应该包含哪些标志或命令。

  4. 我正在使用Ubuntu 14.04

    感谢。

1 个答案:

答案 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

如果您需要其他功能,则必须交叉编译这些依赖项。