【问题标题】:makefile doesn't import PATH properlymakefile 没有正确导入 PATH
【发布时间】:2017-08-30 02:32:42
【问题描述】:

我有一个简单的 Makefile。出于某种原因,我没有正确导入PATH

这是我在终端中运行 echo $PATH 时得到的结果

/home/someuser/myfs/opt/pkg/petalinux-v2016.2-final/tools/common/petalinux/bin:/home/someuser/myfs/opt/pkg/petalinux-v2016.2-final/tools/linux-i386/petalinux/bin:/home/someuser/myfs/opt/pkg/petalinux-v2016.2-final/tools/common/petalinux/bin:/home/someuser/myfs/opt/pkg/petalinux-v2016.2-final/tools/linux-i386/microblaze-xilinx-elf/bin:/home/someuser/myfs/opt/pkg/petalinux-v2016.2-final/tools/linux-i386/microblazeel-xilinx-linux-gnu/bin:/home/someuser/myfs/opt/pkg/petalinux-v2016.2-final/tools/linux-i386/gcc-arm-none-eabi/bin:/home/someuser/myfs/opt/pkg/petalinux-v2016.2-final/tools/linux-i386/gcc-arm-linux-gnueabi/bin:/home/someuser/myfs/opt/pkg/petalinux-v2016.2-final/tools/linux-i386/aarch64-none-elf/bin:/home/someuser/myfs/opt/pkg/petalinux-v2016.2-final/tools/linux-i386/aarch64-linux-gnu/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

这是我在运行make 时得到的PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

有人知道怎么回事吗?

Makefile 在下面,这是我的系统描述

uname -a
4.4.0-72-generic #93~14.04.1-Ubuntu SMP Fri Mar 31 15:05:15 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.5 LTS
Release:    14.04
Codename:   trusty

Makefile

.PHONY: linux bootimage fsbl dts build-dts

all: linux bootimage

dts: build-dts package bootimage

rootfs: build-rootfs package bootimage

fsbl:
    petalinux-build -c bootloader

clean:
    echo $(PATH)
    petalinux-build -x distclean

linux:
    petalinux-build

build-dts:
    petalinux-build -c device-tree

build-rootfs:
    petalinux-build -c rootfs

package:
    petalinux-build -x package

bootimage:
    petalinux-package --boot --force --fsbl ${BOOT_FSBL_IMAGE} --fpga ${BOOT_BIT_IMAGE} --u-boot=${BOOT_UBOOT_IMAGE} -o ${BOOT_IMAGE}

【问题讨论】:

    标签: linux makefile build ubuntu-14.04


    【解决方案1】:

    这是我在运行 make 时得到的 PATH

    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

    这里您的 make 文件没有运行程序所需的必要路径文件。

    最简单的导出方法是在 makefile 中。

    export PATH := bin:$(PATH)

    也许是这样的。

    export PATH := $(shell pwd)/bin:$(PATH)
    
    target:
        mkdir -p ./bin 
        export PATH
        echo $(PATH)
    

    或另一种方法是导出所有路径变量,将其添加到您的 ~/.bashrc,它完成了,它显式设置。

    您可以使用 ":" 附加更多路径,将此行添加到您的 ~/.bashrc

    export PATH=$PATH:~/your/bin1:~/your/bin2
    

    在 env 路径中附加更多路径的示例:

    export PATH=/opt/bin:/usr/local/bin:/usr/contrib/bin:/bin:/usr/bin:/usr/sbin:/usr/bin/X11
    

    Information about export:

    【讨论】:

    • 我想你误解了我的问题。我试图理解为什么make 没有将PATH 正确导入其环境?我的环境PATH 看起来与make 显示的完全不同。我的问题是为什么
    猜你喜欢
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 2014-09-24
    • 2012-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多