【问题标题】:Changing the stack size and LD_LIBRARY_PATH using a Makefile使用 Makefile 更改堆栈大小和 LD_LIBRARY_PATH
【发布时间】:2017-12-04 16:32:54
【问题描述】:

我希望能够在我的 makefile 中有一个规则来更改堆栈大小并将当前目录附加到 LD_LIBRARY_FILE。 在 shell 中我可以这样做:

导出 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$(pwd)

ulimit -s SOME_NUMBER

有没有办法在makefile中制定一条规则,相当于运行这两个命令,并在makefile运行后更新环境变量?

【问题讨论】:

  • 可以设置规则影响make的子进程,但不影响调用shell

标签: makefile


【解决方案1】:

您可以使用-z stack-size=VALUE-rpath 链接可执行文件,这可能会产生类似的效果。

您可以将命令字符推送到 TTY 层并希望 shell 执行它们,但这有点讨厌。 makefile 也可以编译一个使用ptrace 来完成这项工作的程序,但这也会非常难看。

【讨论】:

    【解决方案2】:

    没有

    bash 中的子进程无法影响调用 shell 的环境(正如@mpez 指出的那样)。这样做是为了避免一些安全漏洞。可以导出命令以将环境变量更改为脚本,并在运行 make 后运行该脚本(可以通过另一个脚本自动执行),但 make 本身不会影响调用 shell 的环境。

    【讨论】:

    • 感谢您的解释。我将如何通过脚本做到这一点?
    • 让 make 创建一个脚本(比如postmake.sh)。这将包含export VAR1=x; export VAR2=y ... 的链接中的一些内容,然后有另一个脚本domake,它基本上是make $@ && eval ./postmake.sh。 (需要使用eval而不是直接调用脚本)。
    猜你喜欢
    • 2015-08-17
    • 2018-09-13
    • 2017-11-06
    • 1970-01-01
    • 2021-03-26
    • 2011-02-03
    • 2017-06-26
    • 2018-04-16
    • 2015-10-06
    相关资源
    最近更新 更多