Dependencies 已安装的库是;“失踪”;使用buildroot工具链进行交叉编译时

Dependencies 已安装的库是;“失踪”;使用buildroot工具链进行交叉编译时,dependencies,cross-compiling,buildroot,Dependencies,Cross Compiling,Buildroot,我有一个运行debian的虚拟机(x86_64体系结构),我正在为armv7平台设置一个交叉编译环境。我使用buildroot为armv7构建工具链,该部分工作正常:makemenuconfig,makeSDK,使用arm编译器复制并提取生成的tarball 但是,环境似乎缺少一些依赖项 例如,当尝试为dbclient(dropbear的客户端部分)配置$configure_标志时,我得到以下错误: checking for deflate in -lz... no configure: err

我有一个运行debian的虚拟机(x86_64体系结构),我正在为armv7平台设置一个交叉编译环境。我使用buildroot为armv7构建工具链,该部分工作正常:
makemenuconfig
makeSDK
,使用arm编译器复制并提取生成的tarball

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

例如,当尝试为dbclient(dropbear的客户端部分)配置$configure_标志时,我得到以下错误:

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"
一切看起来都很好,而且正如预期的那样找到了正确的编译器。如您所见,我有buildroot的工具链,位于
/home/jarmund/arm-buildroot-linux-uclibcgnueabihf\u sdk-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
dev系统确实包含zlib,当我尝试
安装zlib1g dev
时,我会收到以下消息:

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

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

我不太清楚为什么要运行虚拟机来执行交叉编译?你不能创建一个Arm虚拟机并用“本机”工具链编译它吗?@AndreiTumbar,因为virtualbox不是模拟器,因此不模拟CPU体系结构,而是依赖于主机系统的实际CPU体系结构。如果我可以完整地模拟ARM机器,我会的。也许可以尝试使用QEMU编译一个chroot环境(这将模拟ARM指令集)。我想看看Gentoo文档中的交叉编译:我不太清楚为什么要运行虚拟机来进行交叉编译?你不能创建一个Arm虚拟机并用“本机”工具链编译它吗?@AndreiTumbar,因为virtualbox不是模拟器,因此不模拟CPU体系结构,而是依赖于主机系统的实际CPU体系结构。如果我可以完整地模拟ARM机器,我会的。也许可以尝试使用QEMU编译一个chroot环境(这将模拟ARM指令集)。我将查看Gentoo文档以进行交叉编译: