2014-09-03 1 views
0

에 있습니다 경우에만 나는 메이크에서 다음 명령을 내 프로그램을 시작할 수 있습니다 작동합니까 :LD_LIBRARY_PATH는 : 시작 호출이 같은 줄

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

나는 (동일한 명령의 2 라인 버전으로 전환 할 때 사람이) 그것을 할 것 같은 부스트에서

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

라이브러리를 찾을 수 없습니다 더 이상 :

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

FA로 내가 이해하는 한, 시작 코드의 한 줄과 두 줄 버전은 똑같이해야한다. 뭐가 잘못 됐어?

답변

2

기본적으로 Makefile의 모든 래서 피 라인은 새로운 쉘 인스턴스를 호출하므로 export은 첫 번째 라인 실행이 끝날 때까지만 유효합니다. GNU와

당신이 .ONESHELL 특별한 목표 정의하여이 동작을 변경할 수 있습니다합니다

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

출력을

bar 
관련 문제