Linux에서 Unix 애플리케이션 컴파일 [닫기]

Linux에서 Unix 애플리케이션 컴파일 [닫기]

분명히 Unix와 Linux의 기본 운영 체제에는 유사점이 있습니다.

컴파일된 Makefile이 Linux 운영 체제에서는 컴파일되지 않지만 FreeBSD 또는 OSX 운영 체제에서는 컴파일되지 않는 이유가 있습니까?

예를 들어, 다음 애플리케이션을 설치하면 FreeBSD 운영 체제에서는 성공적으로 컴파일되지만 CentOS 또는 Ubuntu에서는 실패합니다.

http://www.superscript.com/trigger/install.html

이 특정 Makefile을 빌드하는 데 필요한 Linux 운영 체제에서 누락된 라이브러리나 커널 헤더가 있습니까?

참고용 Makefile은 다음과 같습니다. https://github.com/SuperScript/trigger/blob/master/src/Makefile

이것이 package\compileLinux 상자에서 실행하려고 할 때 나타나는 결과입니다.

# package/compile
sh makefile.build default.build load load
makefile.build: line 30: .: default.build: file not found
sh makefile.build default.build systype systype
makefile.build: line 30: .: default.build: file not found
sh makefile.build default.build compile compile
makefile.build: line 30: .: default.build: file not found
sh makefile.build default.o.build trigger-pull.o trigger-pull
makefile.build: line 30: .: default.o.build: file not found

답변1

이 패키지에서 사용되는 다양한 고유 빌드 스크립트를 살펴본 후에는 셸용으로 작성된 것으로 보입니다. 이는 /bin/sh기본적으로 스크립트 경로에 관계없이 .명령( source셸의 )이 현재 디렉터리에서 도트 스크립트를 읽고 실행할 수 있도록 허용합니다. bash명시적으로 제공되지 않으며 현재 디렉토리가 없습니다 $PATH(또는 개발자는 일반적으로 없고 있어서도 안 되는 디렉토리를 .가지고 있다고 가정합니다).$PATH

이 문제에 대한 해결책은 src/makefile.build스크립트를 패치하여 다음과 같이 하는 것입니다.build_do29행의 쉘 함수읽다

build_do() {
  ( . ./"$build_it_cmds" "$1" "$2" "$3" > "$3" )
}

추가된 내용을 참고하세요 ./.

그런 다음 이 문제에 대한 버그 보고서를 프로젝트에 제출해야 할 수도 있습니다. 다행스럽게도 GitHub를 사용하면 이 작업을 수행하는 것이 매우 쉽습니다. 하지만 2012년 이후로 이 프로젝트에 대한 개발이 전혀 없어서 중단되었는지는 알 수 없습니다.

관련 정보