白笔留墨 2025-04-24 20:49 采纳率: 0%
浏览 7

交叉编译出错,无法通过

我在进行交叉编译的时候交叉编译的编译链所依赖的库与主机依赖库混合了,不知道怎么禁止主机的头文件

./configure \
    --build=x86_64-linux-gnu \
    --host=csky-abiv2-linux \
    --prefix=/home/test/build_libs/tpm2-tss-install \
    CC=csky-abiv2-linux-gcc \
    CFLAGS="-mcpu=ck860 -I/home/test/build_libs/openssl/include -I/home/test/build_libs/jsonc/include -I/home/test/build_libs/libuuid/include -include /home/test/build_libs/fix_includes/fix_types.h " \
    LDFLAGS="-L/home/test/build_libs/openssl/lib -L/home/test/build_libs/jsonc/lib -L/home/test/build_libs/libuuid/lib" \
    PKG_CONFIG_PATH="/home/test/build_libs/openssl/lib/pkgconfig:/home/test/build_libs/jsonc/lib/pkgconfig:/home/test/build_libs/libuuid/lib/pkgconfig:$PKG_CONFIG_PATH"

img

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-04-24 20:49
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    交叉编译时,编译链可能会包含主机的头文件,这是因为编译器的默认行为。要禁止主机的头文件,可以使用 --host 选项来指定交叉编译的目标平台。

    在你的情况下,可以尝试使用以下命令:

    ./configure \
        --build=x86_64-linux-gnu \
        --host=x86_64-linux-gnu \
        ...
    

    这将告诉 configure 脚本使用 x86_64-linux-gnu 作为交叉编译的目标平台,而不是当前主机平台。

    如果你已经使用 --host 选项,但是仍然出现问题,可以尝试使用 --with-host-headers 选项来指定交叉编译不使用主机的头文件。

    ./configure \
        --build=x86_64-linux-gnu \
        --host=x86_64-linux-gnu \
        --with-host-headers=no
    

    这将禁止 configure 脚本使用主机的头文件。

    如果你仍然出现问题,可以尝试使用 --sysroot 选项来指定交叉编译的根目录。

    ./configure \
        --build=x86_64-linux-gnu \
        --host=x86_64-linux-gnu \
        --sysroot=/path/to/sysroot
    

    这将告诉 configure 脚本使用指定的根目录作为交叉编译的根目录,而不是当前主机平台的根目录。

    评论

报告相同问题?

问题事件

  • 创建了问题 4月24日