为什么此Makefile仅适用于单个作业?

用户名

我正在尝试编写一个Makefile可编译交叉编译器的。它下载GCCbinutils解压缩档案,运行configure脚本并运行make。

这是Makefile我写的:

# Versions
GCC_VERSION := 6.3.0
BINUTILS_VERSION := 2.27

# Build
TARGET ?= i686-elf
PREFIX := $(realpath build)

# Phony tasks
.PHONY: all clean gcc binutils

# Targets
BINUTILS_TARGETS := build/bin/${TARGET}-addr2line build/bin/${TARGET}-ar \
    build/bin/${TARGET}-as build/bin/${TARGET}-c++filt \
    build/bin/${TARGET}-elfedit build/bin/${TARGET}-gprof \
    build/bin/${TARGET}-ld build/bin/${TARGET}-ld.bfd build/bin/${TARGET}-nm \
    build/bin/${TARGET}-objcopy build/bin/${TARGET}-objdump \
    build/bin/${TARGET}-ranlib build/bin/${TARGET}-readelf \
    build/bin/${TARGET}-size build/bin/${TARGET}-strings \
    build/bin/${TARGET}-strip
GCC_TARGETS := build/bin/${TARGET}-cpp build/bin/${TARGET}-gcc \
    build/bin/${TARGET}-gcc-${GCC_VERSION} build/bin/${TARGET}-gcc-ar \
    build/bin/${TARGET}-gcc-nm build/bin/${TARGET}-gcc-ranlib \
    build/bin/${TARGET}-gcov build/bin/${TARGET}-gcov-tool

# Aliases
all: binutils gcc
gcc: ${GCC_TARGETS}
binutils: ${BINUTILS_TARGETS}

# Download the packages
packages/gcc-${GCC_VERSION}.tar.bz2:
    curl ftp://ftp.gnu.org/gnu/gcc/gcc-${GCC_VERSION}/gcc-${GCC_VERSION}.tar.bz2 \
        -o $@
packages/binutils-${BINUTILS_VERSION}.tar.bz2:
    curl ftp://ftp.gnu.org/gnu/binutils/binutils-${BINUTILS_VERSION}.tar.bz2 \
        -o $@

# Extract them
packages/gcc-${GCC_VERSION}/configure: packages/gcc-${GCC_VERSION}.tar.bz2
    tar -xmjf $< -C packages
packages/binutils-${BINUTILS_VERSION}/configure: packages/binutils-${BINUTILS_VERSION}.tar.bz2
    tar -xmjf $< -C packages

# Build them
${GCC_TARGETS}: packages/gcc-${GCC_VERSION}/configure
    mkdir -p build/gcc
    cd build/gcc && ../../packages/gcc-${GCC_VERSION}/configure \
        --target=${TARGET} --prefix=${PREFIX} --disable-nls \
        --enable-languages=c --without-headers && make all-gcc && \
        make all-target-libgcc && make install-gcc && make install-target-libgcc
${BINUTILS_TARGETS}: packages/binutils-${BINUTILS_VERSION}/configure
    mkdir -p build/binutils
    cd build/binutils && ../../packages/binutils-${BINUTILS_VERSION}/configure \
        --target=${TARGET} --prefix=${PREFIX} --with-sysroot --disable-nls \
        --disable-werror && make && make install

# Clean everything
clean:
    rm -rf build/*
    rm -rf packages/*

它在make没有选项的情况下运行时可以工作,但是当我使用Jobs选项时,它会失败(但并非每次都失败):它会下载binutilsGCC并行运行。

完全下载binutils后,它将解压缩并进行编译,然后GCC下载结束,但它不会执行任何操作,也没有错误。

有时也可能会编译GCCbinutils失败,并出现奇怪的错误(我将使用其中的一些内容来编辑这篇文章)。

迈克尔·利夫申(Michael Livshin)

不确定特定构建失败的确切原因,但Makefile存在问题:2个构建规则具有多个目标。Make无法很好地支持此功能,请参见此处进行解释。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么此语句仅适用于WHERE?

来自分类Dev

为什么此脚本仅适用于此列表中的列表项之一?

来自分类Dev

为什么 Android 主题不适用于单个按钮

来自分类Dev

为什么此委托不适用于UITextView

来自分类Dev

为什么此代码适用于不同类型?

来自分类Dev

为什么此代码不适用于svg元素?

来自分类Dev

为什么此过渡属性不适用于 css?

来自分类Dev

为什么此查询不适用于指定的日期?

来自分类Dev

为什么此正则表达式替换不适用于JavaScript,而仅适用于其他引擎?

来自分类Dev

为什么以下代码仅适用于GridLayout?

来自分类Dev

为什么附加文本区域仅适用于.text而不适用于.val?

来自分类Dev

为什么图例选择仅适用于“ ax.twinx()”而不适用于“ ax”?

来自分类Dev

为什么Multi Peer Connectivity仅适用于MCAdvertiserAssistant而不适用于MCNearbyServiceAdvertiser

来自分类Dev

为什么此正则表达式仅适用于字符串结尾符号?

来自分类Dev

为什么此扩展方法适用于泛型而不适用于设置的基本类型?

来自分类Dev

为什么此代码可用于AngularJS 1.2.9,但不适用于1.3.2?

来自分类Dev

为什么HTML中“ <input>”标记中的“ size”属性仅适用于TEXT而不适用于NUMBER?

来自分类Dev

为什么Vue.js键修饰符仅适用于`<button>`而不适用于`<div>`?

来自分类Dev

ImportError仅适用于crontab作业吗?

来自分类Dev

为什么提交输入样式既不适用于Safari(Mac)也不适用于Chrome,而仅适用于背景颜色?

来自分类Dev

Scala:为什么带有单个参数函数的 foreach 不适用于压缩结果

来自分类Dev

为什么使用移位的此交换宏不适用于负数?

来自分类Dev

为什么此解决方案不适用于硬币找零算法?

来自分类Dev

为什么此模式不适用于敲除验证?(分隔的邮政编码)

来自分类Dev

为什么此正则表达式不适用于grep?

来自分类Dev

为什么此Delegate约束不适用于定义事件?

来自分类Dev

为什么此string。标点符号代码不适用于剥离标点符号?

来自分类Dev

为什么此未定义检查不适用于查找功能?

来自分类Dev

为什么此jQuery验证不适用于IE 7/8?

Related 相关文章

  1. 1

    为什么此语句仅适用于WHERE?

  2. 2

    为什么此脚本仅适用于此列表中的列表项之一?

  3. 3

    为什么 Android 主题不适用于单个按钮

  4. 4

    为什么此委托不适用于UITextView

  5. 5

    为什么此代码适用于不同类型?

  6. 6

    为什么此代码不适用于svg元素?

  7. 7

    为什么此过渡属性不适用于 css?

  8. 8

    为什么此查询不适用于指定的日期?

  9. 9

    为什么此正则表达式替换不适用于JavaScript,而仅适用于其他引擎?

  10. 10

    为什么以下代码仅适用于GridLayout?

  11. 11

    为什么附加文本区域仅适用于.text而不适用于.val?

  12. 12

    为什么图例选择仅适用于“ ax.twinx()”而不适用于“ ax”?

  13. 13

    为什么Multi Peer Connectivity仅适用于MCAdvertiserAssistant而不适用于MCNearbyServiceAdvertiser

  14. 14

    为什么此正则表达式仅适用于字符串结尾符号?

  15. 15

    为什么此扩展方法适用于泛型而不适用于设置的基本类型?

  16. 16

    为什么此代码可用于AngularJS 1.2.9,但不适用于1.3.2?

  17. 17

    为什么HTML中“ <input>”标记中的“ size”属性仅适用于TEXT而不适用于NUMBER?

  18. 18

    为什么Vue.js键修饰符仅适用于`<button>`而不适用于`<div>`?

  19. 19

    ImportError仅适用于crontab作业吗?

  20. 20

    为什么提交输入样式既不适用于Safari(Mac)也不适用于Chrome,而仅适用于背景颜色?

  21. 21

    Scala:为什么带有单个参数函数的 foreach 不适用于压缩结果

  22. 22

    为什么使用移位的此交换宏不适用于负数?

  23. 23

    为什么此解决方案不适用于硬币找零算法?

  24. 24

    为什么此模式不适用于敲除验证?(分隔的邮政编码)

  25. 25

    为什么此正则表达式不适用于grep?

  26. 26

    为什么此Delegate约束不适用于定义事件?

  27. 27

    为什么此string。标点符号代码不适用于剥离标点符号?

  28. 28

    为什么此未定义检查不适用于查找功能?

  29. 29

    为什么此jQuery验证不适用于IE 7/8?

热门标签

归档