2010-02-19 3 views
1

파일에 버전 정보를 추가하려면 어떻게합니까? 파일은 일반적으로 실행 파일, .so 및 .a 파일입니다.파일 버전 정보

참고 : 저는 C++, dpkg-build 및 Ubuntu 8.10을 사용하고 있습니다.

답변

1

공유 객체의 경우 -Wl,soname,<soname>을 gcc 또는 -soname <soname>을 ld로 전달하십시오.

실행 파일과 정적 라이브러리 자체에는 버전 정보가 없지만 원하는 경우 파일 이름에 추가 할 수 있습니다.

+0

아마도 다른 질문이 될 수 있지만 버전 정보가없는 이유는 무엇입니까? –

+0

그 질문에 대한 답이 없습니다. –

+1

@Fredrik : 버전 관리의 목적은 하위 호환성을 제공하여 libfoo에 동적으로 링크 된 바이너리가 최신 버전의 libfoo로 실행될 수 있도록하는 것입니다. 바이너리와 정적 라이브러리의 경우 위의 인수는 부적절하므로 객체 형식에 모든 종류의 버전 필드를 추가 할 필요가 없습니다. – janneb

1

리눅스 실행 파일에는 Windows와 같은 버전 정보가 없습니다 ... 내가 생각한 유일한 방법은 버전 제어 시스템에 의해 rcs, cvs 등과 같이 확장되는 정적 문자열을 만드는 것입니다. SVN은 특정 식별자가 확인 된 코드 사람에 기초하여 확장되는 자식은 여기

 
static char *Id = "$Id$"; 
static char *Author = "$Author$"; 

상기 문자열

가 버전 관리에 체크인 할 때 ... 사용 RCS 식별자의 예이다 시스템에서 다음 번에 체크 아웃 될 때 확장됩니다.

 
static char *Id = "Foo, v1.1, 2009-02-18, 13:13"; 
static char *Author = "foo"; 

바이너리에서 실행되는 유틸리티 'ident'을 사용하십시오. 'ident'는 바이너리 내의 개정 제어 시스템 (rcs) 식별자를 찾습니다.

호프가 도움이 되었으면 안녕하세요, 탐.

+1

'ident'는 한때 매우 유용했지만'$ Id $'문자열을 포함시키는 것은 분산 버전 제어 시스템의 세계에서 현명하지 못했습니다. diffs와 병합을 혼란스럽게합니다. – cdunn2001