linux – 设置临时环境($PATH)
我可能会遇到这个问题的X-Y问题,如果我错了,我鼓励你们纠正我.
我想配置一个工具链环境,可以在不同的平台和不同的编译器版本上工作.我最初写了一个很长的Perl脚本,它生成只包含变量的配置Makefile.我想成为KISS所以我没有使用automake或autoconf编写任何复杂的东西.此外,我希望重新配置过程非常快.在我的情况下,我的家庭./configure在不到1秒钟内完成所有工作.我很满意. 但是我填写我可以使用更好的方法使用环境变量.而不是使用特定变量编写Makefile,我可以直接设置当前的shell环境.例如: export cc=gcc 不幸的是,一些变量已在$PATH中声明.解决方案是在另一个前面添加新的$PATH: export PATH=/new/toolchain/path:$PATH echo $PATH /new/toolchain/path:/old/toolchain/path:/usr/bin:/bin... 我填这是丑陋我想在添加新路径之前删除旧路径. 总结: >使用环境而不是自定义makefile来设置构建配置是否更好? 解决方法
当我有几个要设置的变量时,我编写了一个包装器脚本,然后我将其用作我想要修改的命令的前缀.这让我也可以使用前缀
>应用于单个命令,例如make,或 我用包装纸 >设置编译器选项(例如clang,设置CC变量,使配置脚本“看到”它作为选择的编译器), 每个包装器都会执行识别正确PATH,LD_LIBRARY_PATH和类似变量所需的内容. 例如,我在大约十年前编写了这个特殊脚本来测试本地构建的python: #!/bin/bash ver=2.4.2 export TOP=/usr/local/python-$ver export PATH=$TOP/bin:$PATH export LD_LIBRARY_PATH=`newpath -n LD_LIBRARY_PATH -bd $TOP/lib $TOP/lib/gcc/i686-pc-linux-gnu/$ver` if test -d $TOP then exec $* else echo no $TOP exit 1 fi 并将其用作-python-2.4.2 myscript. 一些包装器只是调用另一个脚本. #!/bin/sh # $Id: cfg-mingw,v 1.7 2014/09/20 20:49:31 tom Exp $ # configure to cross-compile using mingw32 BUILD_CC=${CC:-gcc} unset CC unset CXX TARGET=`choose-mingw32` if test -n "$TARGET" then PREFIX= test -d /usr/$TARGET && PREFIX="--prefix=/usr/$TARGET" cfg-normal --with-build-cc=$BUILD_CC --host=$TARGET --target=$TARGET $PREFIX "$@" else echo "? cannot find MinGW compiler in path" exit 1 fi 其中choose-mingw32和cfg-normal是脚本,它们(a)找到交叉编译器的可用目标名称,以及(b)为configure脚本提供其他选项. 其他人可能会建议shell别名或函数.我没有为此目的使用它们,因为我的命令行shell通常是tcsh,而我从(a)其他shell脚本,(b)directory editor或(c)text-editor运行这些命令.那些使用POSIX shell(除了当然,对于需要特定功能的脚本),制作少量使用的别名或功能. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |