3

나는이 같은 건물입니다 컴파일러의 소스 코드를 가지고 :바이너리를 빌드하고 Unix의 여러 컴퓨터에서 사용하는 방법은 무엇입니까?

나는 누군가가 통하지 않고 컴파일러 바이너리를 사용할 수 있다는 의도로 다른 컴퓨터에 결과 'INSTALLDIR'를 배포 할
/path/to/srcdir/configure --prefix=/path/to/installdir 
make 
make install 

3 단계 빌드 프로세스 (필자는 배포판 tarball에 installdir을 포함하고 있습니다). 테스트를 위해

, 나는 다른 사용자에 따라 다른 컴퓨터에 INSTALLDIR를 복사하고, 다음 그냥이처럼 그냥 복사 바이너리를 사용하여 테스트 프로그램을 컴파일하려고 :

installdir/bin/ucc -mp -o test load_bl.c 

를 그럼, 다음과 같이 오류가 발생합니다 :

cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/include: Permission denied 
cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/lib/gcc/x86_64-redhat-linux/4.2.0/include: Permission denied 
cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/x86_64-redhat-linux/include: Permission denied 

/home/sghosh/normalbuild/install 내 빌드 시스템에서 configure 동안 --prefix로 지정된 것입니다. installdir/bin/ucc 바이너리는 installdir 아래 open64-gcc-4.2.0 디렉토리의 일부 파일이 필요하지만 그 경로는 --prefix에 언급되어 있으므로 여전히 찾고 있습니다. 현재 컴퓨터에서 동일한 디렉토리를 조사하기를 원합니다. 참고로 sudo/root 권한이 없습니다.

어떤 머신에서든 작동 할 수있는 바이너리 배포판을 만들려면 어떻게해야합니까? (한 번만 빌드하고 아무 곳에 나 정렬하여 사용)이 경우 처음 경로 --prefix을 살펴 보지 않으시겠습니까?

수퍼 유저와 비슷한 질문이 있지만 많은 수정이 있었기 때문에 새 질문에 대한 응답이 없으므로 여기에 쓰고 있습니다.

+0

당신은 정적 저장소 또는 공유 객체 (.so)를 사용하는 저장소를 만들고 있습니까? 모든 머신에서 같은 디렉토리 계층 구조를 만들 수 없다면'.so'에 대한 임베디드 경로는 올바른 loc에 존재하지 않기 때문에 실패합니다. 나는 왜 당신이 'Permission denied'를 얻는 지 알지 못한다. obj 소유권에 대한 사용자/그룹 이름 (가능하면 정수 값)이 빌드 시스템과 일치하고 perm이이 디렉토리에 맞게 설정되었는지 확인 했습니까? 파마 문제를 극복하기 위해 rmt machs에'su root '를 할 수 없다면, 모든 라이브러리가 임베드 된 정적 바이너리를 빌드하는 것이 더 나은 해결책 일 수 있습니다. – shellter

+0

답장을 보내 주셔서 감사합니다. 예,'configured' 명령문에'--disable-shared' 옵션을 넘깁니다. 그러나 그 사실에도 불구하고 여전히 installdir에'.so' 파일이 있다는 것을 알았습니다. 'Permission Denied '는 아마도'.so' 파일을위한 빌드 머신과 같은 디렉토리를 찾으려고하기 때문일 것입니다 (여러분이 말했듯이). 나는 정적 빈을 만들 수 없기 때문에이 문제가 전적으로 문제라고 생각합니다. – Sayan

+0

'[make] static linking'을 검색하여 관련 이슈에 대한 몇 가지 좋은 해답을 찾았습니다. 행운을 빕니다. – shellter

답변

0

확인이 도구 : https://github.com/pgbovine/CDE

CDE가 자동으로 리눅스의 설정을 실행에 관련된 코드, 데이터 및 환경을 패키지 그들이 어떤 설치 또는 구성하지 않고 다른 컴퓨터에 동일하게 실행할 수 있도록 명령하는 도구입니다 .