使用 buildroot 工具链交叉编译时,已安装的库“丢失”

时间:2020-12-23 19:45:39

标签: dependencies cross-compiling buildroot

我有一台运行 debian 的虚拟机(x86_64 架构),我将它设置为 armv7 平台的交叉编译环境。我使用 buildroot 为 armv7 构建工具链,这部分工作正常:make menuconfigmake sdk,使用 arm 编译器复制并提取生成的 tarball。

但是,环境似乎缺少一些依赖项。

例如,当尝试为 dbclient(dropbear 的客户端部分)执行 ./configure $CONFIGURE_FLAGS 时,我收到以下错误:

checking for deflate in -lz... no
configure: error: *** zlib missing - install first or check config.log ***

我在大多数情况下使用 buildroot,导致我source

SDK_PATH=$(dirname $(realpath "${BASH_SOURCE[0]}"))
export "AR=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-ar"
export "AS=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-as"
export "LD=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-ld"
export "NM=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-nm"
export "CC=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-gcc"
export "GCC=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-gcc"
export "CPP=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-cpp"
export "CXX=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-g++"
export "FC=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-gfortran"
export "F77=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-gfortran"
export "RANLIB=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-ranlib"
export "READELF=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-readelf"
export "STRIP=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-strip"
export "OBJCOPY=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-objcopy"
export "OBJDUMP=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-objdump"
export "AR_FOR_BUILD=/usr/bin/ar"
export "AS_FOR_BUILD=/usr/bin/as"
export "CC_FOR_BUILD=/usr/bin/gcc"
export "GCC_FOR_BUILD=/usr/bin/gcc"
export "CXX_FOR_BUILD=/usr/bin/g++"
export "LD_FOR_BUILD=/usr/bin/ld"
export "CPPFLAGS_FOR_BUILD=-I$SDK_PATH/include"
export "CFLAGS_FOR_BUILD=-O2 -I$SDK_PATH/include"
export "CXXFLAGS_FOR_BUILD=-O2 -I$SDK_PATH/include"
export "LDFLAGS_FOR_BUILD=-L$SDK_PATH/lib -Wl,-rpath,$SDK_PATH/lib"
export "FCFLAGS_FOR_BUILD="
export "DEFAULT_ASSEMBLER=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-as"
export "DEFAULT_LINKER=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-ld"
export "CPPFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64"
export "CFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os  "
export "CXXFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os  "
export "LDFLAGS="
export "FCFLAGS= -Os "
export "FFLAGS= -Os "
export "PKG_CONFIG=$SDK_PATH/bin/pkg-config"
export "STAGING_DIR=$SDK_PATH/arm-buildroot-linux-uclibcgnueabihf/sysroot"
export "INTLTOOL_PERL=/usr/bin/perl"
export "CROSS_COMPILE=$SDK_PATH/bin/arm-buildroot-linux-uclibcgnueabihf-"
export "CONFIGURE_FLAGS=--target=arm-buildroot-linux-uclibcgnueabihf --host=arm-buildroot-linux-uclibcgnueabihf --build=x86_64-pc-linux-gnu --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var --program-prefix="
alias configure="./configure ${CONFIGURE_FLAGS}"
alias cmake="cmake -DCMAKE_TOOLCHAIN_FILE=$SDK_PATH/share/buildroot/toolchainfile.cmake -DCMAKE_INSTALL_PREFIX=/usr"
export "PATH=$SDK_PATH/bin:$SDK_PATH/sbin:$PATH"

一切看起来都很好,而且按预期找到了正确的编译器。如您所见,我在 /home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/ 中有来自 buildroot 的工具链。采购后,我的 env 如下所示:

(snipped irrelevant stuff)
PKG_CONFIG=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/pkg-config
CXXFLAGS_FOR_BUILD=-O2 -I/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/include
FCFLAGS_FOR_BUILD=
LANG=en_US.UTF-8
AS_FOR_BUILD=/usr/bin/as
CFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os  
STAGING_DIR=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/arm-buildroot-linux-uclibcgnueabihf/sysroot
INTLTOOL_PERL=/usr/bin/perl
CC=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-gcc
READELF=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-readelf
XDG_SESSION_ID=70
USER=jarmund
CXXFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -Os  
STRIP=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-strip
LDFLAGS_FOR_BUILD=-L/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/lib -Wl,-rpath,/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/lib
OBJCOPY=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-objcopy
PWD=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot
CONFIGURE_FLAGS=--target=arm-buildroot-linux-uclibcgnueabihf --host=arm-buildroot-linux-uclibcgnueabihf --build=x86_64-pc-linux-gnu --prefix=/usr --exec-prefix=/usr --sysconfdir=/etc --localstatedir=/var --program-prefix=
F77=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-gfortran
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
RANLIB=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-ranlib
OBJDUMP=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-objdump
AS=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-as
AR=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-ar
FCFLAGS= -Os 
CC_FOR_BUILD=/usr/bin/gcc
CPPFLAGS_FOR_BUILD=-I/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/include
FC=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-gfortran
NM=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-nm
CXX=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-g++
SHELL=/bin/bash
SHLVL=1
CROSS_COMPILE=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-
FFLAGS= -Os 
CPPFLAGS=-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
GCC_FOR_BUILD=/usr/bin/gcc
CFLAGS_FOR_BUILD=-O2 -I/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/include
LOGNAME=jarmund
XDG_RUNTIME_DIR=/run/user/1000
LDFLAGS=
CXX_FOR_BUILD=/usr/bin/g++
LD_FOR_BUILD=/usr/bin/ld
DEFAULT_LINKER=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-ld
PATH=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin:/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/sbin:/home/jarmund/bin:/home/jarmund/.local/bin:/snap/bin:/usr/sandbox/:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/share/games:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
GCC=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-gcc
DEFAULT_ASSEMBLER=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-as
CPP=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-cpp
LD=/home/jarmund/arm-buildroot-linux-uclibcgnueabihf_sdk-buildroot/bin/arm-buildroot-linux-uclibcgnueabihf-ld
AR_FOR_BUILD=/usr/bin/ar
_=/usr/bin/env

开发系统确实包含 zlib,因为我在尝试 apt-get install zlib1g-dev 时收到此消息:

zlib1g-dev is already the newest version (1:1.2.11.dfsg-0ubuntu2).

值得注意的是,我有一个具有相同问题的不同项目,但对于 libjson/json-c,它也已安装。所以我相信这些问题是相关的,是我的交叉编译环境遗漏了一些东西。我是否需要以某种方式为 arm 平台获取这些库?或者我是否以某种方式包含了我系统上已有的那些?

0 个答案:

没有答案