한 컴퓨터에서 컴파일하고 다른 컴퓨터에서 "make install"할 수 있습니까?

한 컴퓨터에서 컴파일하고 다른 컴퓨터에서 "make install"할 수 있습니까?

사양이 동일하고 Linux 배포판이 동일한 두 대의 컴퓨터 A와 B가 있는 경우 컴퓨터 A에서 컴파일을 "make"하고 디렉터리를 컴퓨터 B에 복사한 다음 문제 없이 "make install"할 수 있습니까?

답변1

일반적으로 두 호스트가 동일한 사양(예: 동일한 프로세서 아키텍처, 동일한 라이브러리의 동일한 버전 설치, 동일한 커널 설치, 참조 구성 파일/라이브러리의 동일한 파일 시스템 구조 등)을 갖는 경우 가능합니다. 하지만 Makefile에서 불쾌한 일을 할 수 있기 때문에가능한이것은 불가능한 상황입니다.

make명령은 일반적으로 모든 소스 코드를 컴파일하고 이를 설치된 라이브러리 및 커널과 연결한 다음 바이너리 출력 파일을 생성합니다.

답변2

최근 2010 버전을 컴파일해야 했는데, 의존성 문제로 인해 최신 운영체제 qemu에서는 어려운 작업이었습니다 . Ubuntu 16.04그래서 나는 Ubuntu 16.04에서 make(컴파일)을 수행 Ubuntu 10.04한 다음 Ubuntu 16.04에서 make install을 수행해야 했습니다.

maketimestamps취해야 할 조치를 결정 하는 데 사용됩니다 . 따라서 컴파일된 파일을 컴파일 중인 컴퓨터에서 설치 중인 컴퓨터로 전송할 때 타임스탬프가 보존되는 한 작동해야 합니다. meta-data디렉토리 트리에 파일을 저장하고 복원하는 데 사용할 수 있는 다양한 도구가 있습니다 .메타스토어, 그리고자식 캐시 메타. git은 타임스탬프를 보존하지 않기 때문에 후자는 git 저장소에 사용됩니다. 다음과 같은 기타 도구동기화, 그리고CP이전 두 도구처럼 명시적으로 저장하고 복원할 필요 없이 타임스탬프를 유지하면서 파일을 전송할 수 있습니다.

나처럼 당신은 git서버를 사용하여 두 컴퓨터(git push 및 git pull) 간에 파일을 전송하고 있습니다. 필요한 단계는 다음과 같습니다.

#Computer 1 (where compilation is to be done)
make
git-cache-meta --store #this will create a .git_cache_meta file in the current directory
git add .
git commit -m "installed binaries; preserving timestamps"
git push origin master #or whatever may be your remote repository, and branch


#Computer 2 (where install is to be done)
git pull origin master #or use git clone <remote repository URL> <branch name>
git-cache-meta --apply
make install

귀하의 경우에는 원격 Git 저장소 등에 대해 걱정할 필요 없이 rsync타임스탬프( )를 보존하면서 파일을 복사하므로 더 간단한 솔루션처럼 보입니다.-t option

이를 수행하는 데 사용하는 방법은 다음과 같습니다 rsync.

rsync -a <source> <destination>

다시 cp명령을 사용하십시오.

cp -a <source> <destination>

노트:귀하의 경우에는 컴퓨터와 운영 체제가 동일하지만 다른 경우에는 그렇지 않을 수 있으며, 이 경우 동적 종속성(런타임 종속성)을 처리해야 합니다. 예를 들어, 제 경우에는 libz.so.1Ubuntu 16.04 시스템에 ( )를 설치 해야 했습니다 sudo apt-get install lib32z1.

관련 정보