【问题标题】:Cross Compiling libcurl for arm-linux-gnueabihf: Unable to link function recv为 arm-linux-gnueabihf 交叉编译 libcurl:无法链接函数 recv
【发布时间】:2017-11-04 17:30:15
【问题描述】:

我正在尝试为 arm-linux-gnueabihf 交叉编译 libcurl(版本 7.54.0),我在我的 $PATH 中安装了该工具包。我正在运行命令来配置 libcurl:

./configure --enable-static --disable-shared --prefix=/usr/arm-linux-gnueabihf --host=arm-linux-gnueabi --build=i686-pc-linux-gnu CC=arm-linux-gnueabihf-gcc

它开始配置但随后输出:检查 sig_atomic_t 是否为 已经定义为 volatile... 是的,检查信号的返回类型 处理程序...无效检查 sys/select.h...(缓存)是检查 对于 sys/socket.h...(缓存)是检查选择...不检查 对于 sys/types.h...(缓存)是 检查 sys/socket.h...(缓存) 是检查recv...没有配置:错误:无法链接功能 接收

我相信它可能与共享库有关,我通过sudo apt-get install arm-linux-gnueabihf-gcc安装了arm-linux-gnueabihf-gcc

【问题讨论】:

  • 在 Ubuntu 上与 curl 7.54 和 arm-linux-gnueabi 有同样的问题。下载 7.47 并且 ./configure 执行得很好。
  • 有同样的问题...尝试了 curl 7.60 和 7.47.0 - 没有工作

标签: linux gcc cross-compiling libcurl autoconf


【解决方案1】:

函数 recv 是第一个在自动工具执行和链接方面被检查的函数。测试的标准标志也包含 -lz ,它是链接 zlib 的标志(参见下面的文件 config.log ):

 configure:21072: arm-linux-gnueabihf-gcc-4.9 -o conftest -O2 -Wno-error -Werror-implicit-function-declaration -Wno-system-headers -O2 -Wno-error        conftest.c -lbrotlidec   -lz  >&5
 /usr/lib/gcc-cross/arm-linux-gnueabihf/4.9/../../../../arm-linux-gnueabihf/bin/ld: cannot find -lbrotlidec
 /lib/../lib/libz.so: file not recognized: File format not recognized   

如果您进行交叉编译,系统位置 - 通常是 /lib/libz.so - 并不好。请确保使用 --with-zlib 放置正确的 zlib 位置。

【讨论】:

    【解决方案2】:

    [ 我用过,sudo ./configure .... 通过错误点 - 无法链接函数 recv 并且需要使用,sudo make ] ==> 对不起,这应该是错误的答案。

    你发抖 export CPPFLAGS="-I...../include" ==> 这是指你的目标工具链的包含路径。

    参考https://curl.haxx.se/docs/install.html

    【讨论】:

      猜你喜欢
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 2015-07-21
      • 1970-01-01
      • 2020-08-28
      相关资源
      最近更新 更多