gpt4 book ai didi

linux - LD_LIBRARY_PATH : Does only work when startup call is also on same line

转载 作者:太空宇宙 更新时间:2023-11-04 09:36:58 25 4
gpt4 key购买 nike

我可以在 makefile 中使用以下命令启动我的程序:

LD_LIBRARY_PATH=$(CUDAHOME)/lib64:$(LIBHOME)/boost_1_54_0/stage/lib mpiloader -np 2 ./program

当我切换到同一命令的两行版本时(似乎有人这样做)

export LD_LIBRARY_PATH=$(CUDAHOME)/lib64:$(LIBHOME)/boost_1_54_0/stage/lib 
mpiloader -np 2 ./program

不再找到 boost 中的库:

./program: error while loading shared libraries: libboost_chrono.so.1.54.0: cannot open shared object file: No such file or directory

据我了解,启动代码的一行和两行版本应该完全相同。那么这里出了什么问题?

最佳答案

默认情况下,Makefile 中的每个配方行都会调用一个新的 shell 实例,因此您的 export 仅在第一行完成执行之前有效。

使用 GNU make,您可以通过定义 .ONESHELL 来更改此行为特殊目标:

.ONESHELL:
all:
@export foo=bar
@echo $$foo

输出

bar

关于linux - LD_LIBRARY_PATH : Does only work when startup call is also on same line,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25640107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com