2016-12-24 7 views
0

나는 책에서 C를 배우고있다. 이 책은 아카이브 파일을 언급했습니다 :Linux의 아카이브 파일은 어디에 있습니까?

아카이브에는 .o 파일이 포함되었습니다. .zip 또는 .tar 파일을 사용하신 적이 있습니까? 그런 다음 다른 파일을 포함하는 파일을 쉽게 만들 수 있다는 것을 알고 있습니다. 즉, 입니다. 정확히 어떤 .a 아카이브 파일인지 : 다른 파일을 포함하는 파일입니다. 터미널이나 명령 프롬프트를 열고 을 라이브러리 디렉토리 중 하나로 변경하십시오. 이들은 /usr/lib 또는 C : \ MinGW \ lib와 같은 디렉토리에 에 라이브러리 코드가 들어 있습니다. 라이브러리 디렉토리에서 .a 아카이브 전체를 찾습니다. 그리고 nm이라는 명령을 사용하면 내부를 볼 수 있습니다.

그러나 책에서 말하는 lib 위치 ​​(Ubuntu에서)를 검색 할 때 보관 파일을 찾지 못했습니다. 이 보관 파일은 어떻게 볼 수 있습니까?

+3

'정적 라이브러리 .a'이다. '.so'는 동적 라이브러리입니다. – drescherjm

+1

/usr/lib/usr/share/lib/lib 및 해당 트리에도 파일을 연결할 수 있습니다. – drescherjm

답변

1

시스템 라이브러리의 위치는 배포마다 약간 다를 수 있습니다. 우분투에서는 정적 라이브러리를 찾을 수 있습니다 /usr/lib/x86_64-linux-gnu/usr/lib32 각각 64 비트 및 32 비트 (이것은 이전의 우분투 배포판에서 약간 다릅니다.)하지만 최근 배포판 (> 우분투 12)에서는 일관성이 있습니다).

1

설치 한 소프트웨어 패키지에 따라 다릅니다.

# ls -l /usr/lib/*.a 
-rw-r--r-- 1 root root 22448 Aug 29 12:45 /usr/lib/libsupp.a 

당신은 쉽게 자신의 라이브러리를 만들 수 있습니다 : 당신이 traceroute을 설치하는 경우

예를 들어, 당신은/usr/lib 디렉토리 /에서이 같은 것을 볼 수있다. 예를 들어

mylib.c

int hello() 
{ 
    return 1; 
} 

TEST.C

#include <stdio.h> 

int hello(); 

int main() 
{ 
    printf("Hello returned: %d\n", hello()); 
    return 0; 
} 

실행할 :

$ cc -c -o mylib.o mylib.c 
$ ar r mylib.a mylib.o 
$ cc -o test test.c mylib.a 

$ ./test 
Hello returned: 1