CURL交叉编译

时间:2017-03-08 08:21:49

标签: ubuntu curl cmake arm cross-compiling

我在ubuntu上交叉编译用于ARM处理器的Curl Library,在运行make命令时出现以下错误。 错误“strerror_r必须是POSIX,glibc或vxworks-style”

3 个答案:

答案 0 :(得分:2)

这意味着配置无法检测到您的strerror_r版本(如果您正在为Linux执行此操作,这有点奇怪),因此您可以在lib/curl_config.h之后手动定义它:< / p>

/* Define to 1 if you have a working POSIX-style strerror_r function. */
#define HAVE_POSIX_STRERROR_R 1

答案 1 :(得分:2)

主要问题是curl的CMake通过CMake command try_run测试了 libc 功能。但是此命令会生成在交叉编译时无法直接执行的二进制文件。因此,两个变量(HAVE_GLIBC_STRERROR_RHAVE_POSIX_STRERROR_R)都为false,构建失败。

如何解决它有简单的方法。只需安装qemu-user包即可模拟目标平台的二进制文件,并设置CMAKE_CROSSCOMPILINGCMAKE_CROSSCOMPILING_EMULATOR个变量。

例如(当你为aarch64交叉编译时):

cmake \
  -DCMAKE_CROSSCOMPILING=TRUE \
  -DCMAKE_CROSSCOMPILING_EMULATOR=/usr/bin/qemu-aarch64 \
  ..

...当你为目标平台库使用非标准路径时,你应该在那里创建模拟器shell脚本和设置路径:

echo -e '#!/bin/sh\nexec /usr/bin/qemu-aarch64 -L /altroot/aarch64/ "$@"' > /usr/local/bin/qemu-aarch64-altroot
chmod +x /usr/local/bin/qemu-aarch64-altroot

答案 2 :(得分:1)

你可以添加

HAVE_POSIX_STRERROR_R

在编译时向cmake标记。