crosstool-ng 如何向 debian 的交叉编译器工具链添加额外的库

问题描述 投票:0回答:1

我正在尝试使用 crosstool-ng 1.25 创建一个交叉编译工具,一切似乎都正常,但我无法添加额外的库。 这里的问题是我找不到向工具链添加额外包的方法。在这个特定场景中,我需要包“libiw-dev”,因为我尝试编译的应用程序使用“iwlib.h”。 我查看了 crosstool-ng 文档,但找不到任何有关如何实现此目标的答案。 有人遇到过这个问题吗? 这是一个运行 debian 的自定义板,crosstool-ng 似乎是制作交叉编译工具链的好方法,但如果其他工具在这里更有意义,我可能会考虑其他工具。我的主要目标是创建一个带有内核头文件以及系统使用的所有库的交叉编译器。

我查看了“./ct-ng menuconfig”上的所有选项(我认为),甚至尝试询问chatgpt,但还没有运气

debian cross-compiling crosstool-ng
1个回答
0
投票

crosstool-ng 不像其他工具链构建器工具(即 OpenWRT)那样工作,您可以在 menuconfig 中选择其他库。这是因为 OpenWRT 是一个操作系统。

要向 crosstool-ng 添加其他库,您必须根据生成的初始 crosstool-ng 工具链自行构建它们。

我使用 crosstool-ng 从源代码生成许多工具链,然后构建我需要的库。 只是作为一个例子(可能包含错误并且可能会得到改进,但它应该有效):

# Set some variables
TARGET=aarch64-rpi4-linux-gnu
OPENSSL_TARGET=linux-generic64
_NUM_CPU=$(expr $(cat /proc/cpuinfo | grep processor | wc -l) - 2)
_PWD=$(pwd)
_CT_DIR=${_PWD}/crosstool-ng
_LIB_DIR=${_PWD}/libs
_OUT_DIR=${_CT_DIR}/outDir    
# Get crosstool-ng and do the initial build
git clone https://github.com/crosstool-ng/crosstool-ng.git
./bootstrap
./configure --enable-local --prefix=/usr/local --host=x86_64-pc-linux-gnu
make -j${_NUM_CPU}
sudo make install

现在,您将具备开始构建基本工具链的所有基本要求。下一步是构建工具链,对于本示例,我们将使用 TARGET 变量中定义的 aarch64-rpi4-linux-gnu

./ct-ng ${TARGET}
./ct-ng savedefconfig
./ct-ng defconfig
./ct-ng build

完成后,您将拥有工作基础工具链。现在是时候构建您的库了,例如 zlib。

#Set more variables
DSTDIR="${_OUT_DIR}/$TARGET"
mkdir -p ${DSTDIR}/usr/local/share ${DSTDIR}/usr/local/include
export cross=${TARGET}-
export CC="${cross}gcc"
export PATH=$PATH:${_CT_DIR}/.build/${TARGET}/buildtools/bin/
export cross=${TARGET}-
export CC="${cross}gcc"

#get the source code
git clone https://github.com/madler/zlib.git
cd zlib
./configure --prefix=${DSTDIR}
make clean
make -j${_NUM_CPU}
make install

make install 命令会将库安装到您的工具链 include 和 lib 文件夹中。

编译后,您将可以使用 zlib 来链接更多库或您的代码。

整个工具链将在 ${_CT_DIR}/.build/${TARGET}

中提供
© www.soinside.com 2019 - 2024. All rights reserved.