2014-02-05 5 views
3

라이브러리 (정확한 NAG C 라이브러리)를 다운로드했으며 라이브러리의 정적 버전과 동적 버전 모두 동일한 이름 (libnagc_nag)을 사용합니다. 처음에는 OS X에서 정적 버전에 연결하려고했기 때문에 문제가 발생했습니다. 기본적으로 동적 라이브러리를 사용하기 때문에 파일 이름을 변경하여 libnagc_nag_s.a 및 libnagc_nag_d.dylib를 구별했습니다. OS X과 리눅스의 libnagc_nag_d.so). 제 질문은 공통된 관습에 대해 같은 이름을 부여 했습니까? 그렇다고해도 이러한 방식으로 이름을 변경하는 데 문제가 있거나 불리한 점이 있습니까?라이브러리의 정적 버전과 동적 버전을 같은 이름으로 사용하는 것이 일반적입니다.

+2

예는 일반적인 관행이다. 링커 플래그 ('-Bstatic' /'-Bdynamic')로 올바른 종류의 라이브러리를 선택해야합니다. –

+0

그리고 일부 라이브러리의 정적 버전과 다른 라이브러리의 동적 버전을 사용하려면 어떻게됩니까? – German

답변

2

을 전체 라이브러리의 파일 이름을 제공 할 수 있습니다 네,이 협약이

libNAME.a 

libNAME.so.VERS 
을 가지고 있어요

.a는 정적 아카이브입니다. 그래도 으로 정적 라이브러리를 프로그램에 추가하려고합니까? 그렇게하면 트랙 아래로 유지 보수가 어려워집니다. 메이크에 LDFLAGS-lnagc_nag_d 추가

은에 링크 된 동적 라이브러리를 얻을 충분합니다.

+0

일단 libnagc_nag_s.a 및 libnagc_nag_d.so.V에 이름을 수정하면 플래그를 추가하기가 쉽지만 이름이 같은 경우 문제가 발생하므로 -lnagc_nag_d가이 경우 도움이되지 않습니다. – German

+0

왜 응용 프로그램에 정적 양식과 동적 양식을 모두 추가 하시겠습니까? 당신은 하나 또는 다른 것을 필요로하며 나는 동적 인 형태를 강력하게 추천한다. –

+0

아니요, 하나만 추가하고 싶습니다. 실제로 정적 버전입니다 (여러 번 사용하지 않는 작은 과학 응용 프로그램입니다). 그 일을 할 때 정적 인 것과 동적 인 것이 같은 이름을 가지고 있기 때문에 똑같은 명령을 사용한다는 사실을 깨달았습니다. 이것은 나의 호기심을 불러 일으켰고, 이제는 프로그래머가 보통 그들이 원하는 버전을 선택하는 방법을 알아 내려고 노력하고 있습니다. – German

3

또한 당신이 ... (객체 파일로) 링커에

+0

감사합니다. 그러나, 제가 부탁하는 이유는 주로 링커의 행동을 이해하고 일반적인 관행에 대한 통찰력을 얻기 위해서입니다. – German