gnu-make

Make는 변경 시 패턴 규칙의 전이 종속성을 다시 빌드하지 않습니다. 이유는 무엇입니까?
gnu-make

Make는 변경 시 패턴 규칙의 전이 종속성을 다시 빌드하지 않습니다. 이유는 무엇입니까?

대략 다음과 같은 Makefile이 있습니다. .PRECIOUS: %.a %.b %.c %.a: touch $@ %.b: %.a touch $@ %.c: %.b touch $@ 를 사용하여 "test.c"를 생성하면 make test.c3개 파일( test.a, test.b, test.c)이 모두 올바르게 생성됩니다. 그러나 지금 삭제 test.a한 후 다시 생성하려고 하면 test.c아무 일도 일어나지 않습니다. 그 이유는 분명합니다. test.c에...

Admin

Makefile 및 pid 파일
gnu-make

Makefile 및 pid 파일

Makefile에는 pid 파일에 의존하는 몇 가지 편의 규칙이 있지만 프로세스가 존재하지 않는 경우에도 pid 파일이 여전히 존재하는 경우가 있습니다. make에서 이 문제를 해결하기 위한 좋은 패턴은 무엇입니까? 예를 들어 qemu에서 무언가를 실행해야 하는 경우(복잡한 멀티 아키텍처 요구 사항으로 빌드): $(QPID): qemu-system... -pidfile "$(QPID)" ... 잘 작동하고 qemu를 한 번만 시작한 다음 대부분의 시스템에서 완벽하게 종료되며 특정 유형의 가...

Admin

Makefile을 통해 대화형 명령을 올바르게 실행하세요.
gnu-make

Makefile을 통해 대화형 명령을 올바르게 실행하세요.

일련의 빌드 단계를 미리 수행해야 하는 사용자 지정 대화형 명령("repl")이 있습니다. Makefile은 제공하는 캐싱 기능으로 인해 이 특정 빌드 프로세스에 이상적입니다. 따라서 Make를 사용하여 내가 만든 repl을 생성하기 위해 Make를 사용하고 싶은 유혹이 매우 커졌습니다. 아티팩트 빌드에는 대화형 단계가 포함되지 않습니다.(이것은 모범 사례에 위배됩니다.): 대화형 repl은 개발을 제공하는 방법일 뿐입니다. 나는 이 대화형 repl이 Make를 통해 호출될 때 더 나쁘게 동작한다는 ...

Admin

컴파일하지 않고 Linux Lite에 새 버전의 gnu make 설치
gnu-make

컴파일하지 않고 Linux Lite에 새 버전의 gnu make 설치

저는 리눅스 라이트 5.8을 사용하고 있습니다. 설치된 gnu make 버전은 4.2.1인데, 최신 gnu make 버전은 4.4.1입니다. 소스에서 컴파일하지 않고 이 최신 버전을 쉽게 설치할 수 있는 방법이 있습니까? 이 게시물을 찾았습니다https://askubuntu.com/a/1386772/1326이는 4.3용 deb 패키지를 가리키는 것 같지만 저장소 링크가 더 이상 작동하지 않으며 최신 버전의 gnu make를 얻고 싶습니다. ...

Admin

Makefile 오류 "컨텍스트 확인 오류: 파일을 읽을 수 없을 때 '읽기 권한 없음'"
gnu-make

Makefile 오류 "컨텍스트 확인 오류: 파일을 읽을 수 없을 때 '읽기 권한 없음'"

다음 오류가 발생합니다. make deploy_test error checking context: 'no permission to read from '.../ssh-priv-key''. make: *** [Makefile:24: build_deploy] Error 1 이 ssh-priv-key 파일은 의도적으로 사용자가 읽을 수 없도록 만들어졌습니다. makefile이 예상대로 실행되지 않게 만드는 이 권한 문제를 어떻게 방지할 수 있습니까? 웹 검색에서 아무것도 찾을 수 없고 관련 내용도 찾을 수...

Admin

makefile에 cURL 포함
gnu-make

makefile에 cURL 포함

내 코드에서 컬을 사용하고 Makefile을 통해 실행하고 있습니다. 그러나 "make" 명령을 사용하여 실행하면 "curl/curl.h: 해당 파일 또는 디렉터리가 없습니다."와 같은 오류가 발생합니다. 아래는 내 makefile의 내용입니다. ` CXX = /home/directory/Documents/xyz/l4t-gcc/bin/aarch64-buildroot-linux-gnu-cc path = /home/directory/Documents/xyz/l4t-gcc/bin/ CFLAGS = -Wal...

Admin

FreeBSD make(bmake) 및 macOS make(GNU Make 3.81)와 작동하도록 makefile에서 쉘 배포를 어떻게 사용합니까?
gnu-make

FreeBSD make(bmake) 및 macOS make(GNU Make 3.81)와 작동하도록 makefile에서 쉘 배포를 어떻게 사용합니까?

!=FreeBSD, macOS 및 Linux에서 실행될 makefile에서 쉘 할당 연산자(예:)를 사용하고 싶습니다 . 예는 다음과 같습니다. a!= seq 3 .PHONY: all all: $a .PHONY: $a $a: @echo $@ 예상되는 결과는 다음과 같습니다. $ touch 1 2 3 $ make all 1 2 3 안타깝게도 macOS Monterey 12.6.1과 함께 제공되는 GNU Make는 셸 할당 연산자를 지원하지 않으며 이 예제의 출력은 비어 있습니다. 이는 최...

Admin

"make -j16 -l16" 호출에 실패했습니다.
gnu-make

"make -j16 -l16" 호출에 실패했습니다.

Gazebo에서 Tiago 로봇을 시뮬레이션하고 싶고 ROS 사용 가능한 패키지를 사용하고 있습니다. 이전에는 시뮬레이션하는 데 아무런 문제가 없었지만 지금은 그렇지 않습니다. 저는 KVM 가상 머신에서 ROS melodic과 ubuntu 18.04를 사용하고 있습니다. 명령을 사용하여 작업공간을 빌드 하면 catkin_make다음 오류가 발생합니다. [ 1%] Built target _tiago_pick_demo_generate_messages_check_deps_PickUpPoseGoal [ ...

Admin

리메이크에는 필요할 때만 makefile이 포함됩니다.
gnu-make

리메이크에는 필요할 때만 makefile이 포함됩니다.

foo.o두 가지 "주요" 목표인 과 가 있는 Makefile이 있다고 가정해 보겠습니다 clean. 전자에는 파일을 생성하는 방법이 있습니다 foo.o. 후자는 모든 임시 파일을 삭제합니다. 종속성을 수동으로 지정할 필요성을 없애기 위해 종속성의 형식을 지정하는 유효한 makefile을 foo.o목표로 삼고 있습니다 . 이 종속성 파일은 makefile에 포함되어 있습니다.foo.dfoo.o foo.d : dep1 dep2 depn 생성된 파일은 다음과 같습니다. ;; This buffer is f...

Admin

GNU make의 모든 규칙 직렬화: 모범 사례?
gnu-make

GNU make의 모든 규칙 직렬화: 모범 사례?

메이크파일이 있는데 확인하고 싶습니다.모든 규칙순차적으로 실행됩니다. 즉,병렬 실행처형되다. 나는 가지고 있다고 믿는다세 가지 방법이 목표를 달성하려면: 그리고.NOTPARALLEL표적, 을 호출하여 make사용합니다 make -j 1. 예를 들어 makefile에서 직접 플래그를 설정하면 다음과 같습니다.MAKEFLAGS := -j 1 세 가지 사이에 "모범 사례"가 있으며 어느 것이 더 강력합니까? 예를 들어, 이건 너무한 걸까요? MAKEFLAGS := --jobs=1 .NOTPARALLE...

Admin

Makefile에서 echo -e가 이상하게 동작하는 이유는 무엇입니까?
gnu-make

Makefile에서 echo -e가 이상하게 동작하는 이유는 무엇입니까?

저는 Makefile(해당하는 경우 Ubuntu 20.04에서)을 작성 중이며 다음 echo과 같은 간단한 Makefile을 예로 들어 보겠습니다. test.txt: @echo -e 'hello\nworld' @echo -e 'hello\nworld' > test.txt 를 실행하면 makestdout에서도 test.txt와 동일한 내용이 표시될 것으로 예상하지만 실제로는 그렇지 않습니다. 표준 출력에서 ​​이것을 얻습니다. hello world 그러나 이것은 t...

Admin

make all-recursive를 사용할 때 권한 거부 오류가 발생합니까?
gnu-make

make all-recursive를 사용할 때 권한 거부 오류가 발생합니까?

autotools와 GNU make를 사용하여 C 라이브러리를 구축 중인데 다음 줄이 있습니다. all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive Makefile에서 컴파일할 때 오류가 발생합니다. make all-recursive make: make: Permission denied make: *** [Makefile:427: all] Error 127 뭐가 문제 야? ...

Admin

동일한 make 명령이 macOS에서는 실패하지만 Linux에서는 성공합니다.
gnu-make

동일한 make 명령이 macOS에서는 실패하지만 Linux에서는 성공합니다.

저는 macOS에서는 실패하지만 다음 오류와 함께 Linux(alpine, Ubuntu, Debian)에서는 성공하는 아래 Makefile를 사용하고 있습니다.make publish $ make publish "docker images" requires at most 1 argument. See 'docker images --help'. Usage: docker images [OPTIONS] [REPOSITORY[:TAG]] List images "docker inspect" requires a...

Admin

이 makefile 명령이 왜 그렇게 자주 실행됩니까?
gnu-make

이 makefile 명령이 왜 그렇게 자주 실행됩니까?

다음 메이크파일이 있습니다. data/vix.csv그런데 왜 대상을 실행할 때 대상의 규칙이 항상 실행됩니까 make? 안에SO에 대한 최근 답변, 내가 많이 달리는데 last_updated.txt도 누군가가 24시간 간격으로 업데이트하는 방법을 알려줬어요 . make결과적으로 @echo "\n\n##### updating last_updated.txt#####\n\n"실행할 때 인쇄되는 내용이 거의 없습니다 make. 내가 아는 한, 이것이 유일한 새로운 것입니다 last_updated.txt. 하...

Admin

make -j`nproc`을 사용하면 페이지 폴트 수가 급증합니다.
gnu-make

make -j`nproc`을 사용하면 페이지 폴트 수가 급증합니다.

나는 최고의 컴파일 시간을 얻기 위해 GNU Make가 사용하도록 허용해야 하는 작업 수를 파악하기 위해 벤치마크를 실행하고 있습니다. 이를 위해 make -j<N>N이 1에서 17 사이의 정수인 Glibc를 컴파일했습니다. 지금까지 각 N 선택에 대해 이 작업을 35번 수행했습니다(총 35*17=595번). 나도 실행 중이야GNU 시간Make가 소요하는 시간과 사용하는 리소스를 결정합니다. 결과 데이터를 분석해 보니 뭔가 이상한 점을 발견했습니다. 내가 거기에 도착했을 때 주요 페이지 오...

Admin