나는 최근에 (그리고 어리석게도 여기에 간단한 해결책이 있기 때문에 옵션을 설정하지 않고 --prefix=
기본값이 아닌 다른 것으로 옵션을 설정했었습니다 /usr/bin
) configure
d 및 make
d . 꽤 많은 시간이 걸리기 때문에 전체 내용을 다시 만들고 싶지는 않습니다 .gcc-4.9.1
--prefix=
make
내 디렉토리에는 OS(Ubuntu-14.04)에 의해 설치된 대로 /usr/bin/
이미 포함되어 있습니다 . gcc-4.8.2
핵심은 기존 심볼릭 링크가 모두 같은 항목을 가리키며 명령 시 등에 대한 심볼릭 링크 gcc-4.8
로 대체된다는 것입니다 .make install
gcc-4.9
g++-4.9
make
이미 존재하는 심볼릭 링크를 대체하지 않도록 인수를 에 전달할 수 있습니까 ? 아니면 비슷한가요?
답변1
우선 참고하세요기본 접두사명시적으로 지정하지 않는 한 대부분 /usr/local입니다. 따라서 /usr에 설치를 덮어쓰는 것은 귀하의 경우에는 문제가 되지 않을 수도 있지만, /usr에 하나의 GCC가 있고 /usr/local에 다른 GCC가 있으면 혼란을 야기할 수 있습니다.
gcc-4.9.1에서 구체적으로 작동하는지 확실하지 않지만(그렇지 않을 이유는 거의 없지만) autoconf(스크립트를 생성함 configure
)는 다음을 위한 기능을 제공합니다.설치 시 접두사를 재정의합니다.
설치 위치에 영향을 미치는 가장 이식 가능한 방법은 구성할 올바른 위치를 전달하는 것입니다. 그러나 많은 패키지는 재구성이나 재컴파일 없이 설치 위치를 변경할 수 있도록 'make install' 명령줄에 변수 할당을 전달하는 다음 바로 가기 중 하나 또는 둘 다를 제공합니다.
첫 번째 방법은 영향을 받는 각 디렉터리에 재정의 변수를 제공하는 것입니다. 예를 들어, 'make install prefix=/path/to/alternate'는 대체 위치를 선택하고 '${prefix}'로 표현된 다른 모든 디렉터리 구성 변수에 영향을 미칩니다(또는 다르게 말하면 모든 구성 중에 지정되었지만 공통 접두사 측면에서 지정되지 않은 디렉토리는 전체 설치를 재배치하려면 설치 시 설치 시 각각 재정의되어야 합니다. 각 디렉터리 변수에 대한 makefile 변수 재정의 방식은 GNU 코딩 표준에서 요구되며 이상적으로는 재컴파일이 발생하지 않습니다. 그러나 일부 플랫폼에는 이 방법을 사용할 때 다시 컴파일해야 하는 공유 라이브러리의 의미 체계에 대한 알려진 제한 사항이 있으며, 특히 GNU Libtool을 사용하는 패키지에서 두드러집니다.
두 번째 방법은 'DESTDIR' 변수를 제공하는 것입니다. 예를 들어, 'make install DESTDIR=/path/to/alternate'는 모든 설치 경로 앞에 '/path/to/alternate'를 추가합니다. 'DESTDIR' 재정의 접근 방식은 GNU 코딩 표준에서 요구되지 않으며 드라이브 문자가 있는 플랫폼에서는 작동하지 않습니다. 반면에 재컴파일 문제를 피하는 데 더 효과적이며 구성 시 '${prefix}' 측면에서 일부 디렉터리 옵션이 지정되지 않은 경우에도 잘 작동합니다. 'DESTDIR'을 지원하는 패키지의 경우 변수는 구성 및 'make all' 중에 정의되지 않은 상태로 유지되어야 하며 'make install' 중에만 지정되어야 합니다.
그래서make install DESTDIR=/opt/gcc-4.8.2
~해야 한다당신이 추구하는 일을 거의 수행하십시오. 원하는 정확한 디렉토리 구조에 따라 약간 후에 파일을 이동해야 할 수도 있지만 시작에는 충분할 것입니다.
나는 이것을 테스트하지 않았습니다. 당신은 자신의 책임하에 그것을 실행합니다.