bash는 스크립트의 실행 결과이다 Buildroot의 지역 변수를 정의하고 그 값에 NETMAP 패키지 빌드 디렉토리, /usr/local/buildroot/output/build/netmap-master
입니다 .IT는 $(@D)
로 리디렉션 할 수 있어야 BUILDDIR=$PWD
내 그렇지 않으면 객체 파일은 buildroot
루트 디렉토리로 출력됩니다. 어떻게 <code>BUILDDIR</code>라는 <code>netmap/LINUX/configure</code>의 지역 변수가있다
NETMAP_CURRENT_BUILD
라는 변수를 생성하고
/usr/local/buildroot/output/build/netmap-master
,
$(@D)
, 하자 다음 나는
BUILDDIR=/usr/local/buildroot/output/build/netmap-master
에
BUILDDIR=$PWD
을 대체 싶어요. 다음과 같이 샘플 코드를 사용하여 수행 할 수 없습니다. 당신은 실제로이 필요하지 않습니다, 아래 참조
define NETMAP_BUILD_CMDS
NETMAP_CURRENT_DIR = $(sed -e 's/\//\\\//g' <<< "$(@D)") -- empty
echo "$$(sed -e 's/\//\\\//g' <<< "$(@D)")" -- this line works fine
...
sed -e 's/BUILDDIR=$$PWD/BUILDDIR=$(NETMAP_CURRENT_DIR)/g' -i $(@D)/LINUX/configure
(double $$PWD, it has to be like this, which means string $PWD is needed rather than its value.)
...
endef
변수에 슬래시가 포함되어 있으면 구분 기호로 슬래시를 사용하지 마십시오.나는 서브 쉘이'$ (@ D) "의 의미를 알기를 기대할 수 없다고 생각하지만 명령에서 작동한다면'...'을 실행 한 다음''sed ''를 시도하십시오 s % BUILDDIR = $$ – tripleee
'$$ PWD'에 슬래쉬가 포함되어 있다면 (현재 일반적으로 그러 하듯이) 현재 접근법에서 슬래시를 이스케이프 처리해야합니다 , 너무. 위의 주석에서 슬래시를 이스케이프 할 필요가없는 구문으로 전환하는 방법도 있습니다. – tripleee
답장을 보내 주셔서 감사합니다. 내 호스트 컴퓨터가 Gentoo 텍스트 모드 콘솔에 있으므로,'netmap.mk'을 붙여 넣을 수 없습니다. 죄송합니다. 서브 쉘은 실제로'netmap.mk' 내부에 있으므로,이 블록에서 쉘 스크립트를 실행할 수 있습니다. Buildroot 구문으로 인해,'$ PWD' 문자열을 내 표현식에 넣고 싶다면'$$ PWD'가되어야합니다. –