ln - make links between files
파일들 사이에 링크를 생성하는 명령어
옵션이 대분소 소문자를 구분한다 혼동하지 말자.
-T, --no-target-directory
treat LINK_NAME as a normal file : LINK_NAME 항목을 일반적인 파일로 취급한다.
-f, --force
remove existing destination files : 기존 목적 파일들을 삭제한다.
-s, --symbolic
make symbolic links instead of hard links : 하드링크 대신에 심볼릭 링크를 만든다
2018-02-23 사용 상황
모드 버스 라이브러리를 받아서 ARM 용으로 크로스 컴파일 했다.
라이브러리 테스트 겸 간단한 애플리케이션을 하나 만들어서 시험을 했다.
시험 중, 어라?? 라이브러리 파일(.so)을 타겟에 넣어 주지도 않았는데 잘 돌아간다.
찾아 보니 타겟의 파일 시스템에 이미 ARM용 라이브러리가 포함되어 있었다.
그런데 파일명을 보니 버전이 좀 다르다.
원래 있던 라이브러리는 5.0.4
새로 크로스 컴파일 한 라이브러리는 5.0.5
추가로 라이브러리 파일명에 붙어 있는 버전의 의미를 잘 모르겠다.
다운로드 할때는 분명히 3.0.6으로 표기가 되어 있었는데..
라이브러리는 왜 5.0.5냐? 나중에 한번 찾아보자.
아무튼 새로 컴파일한 5.0.5를 타겟으로 다운로드 했다.
그러나 아직 libmodbus.so 파일이 5.0.4 파일에 링크되어 있다.
이 링크를 5.0.5 파일로 바꿔 줘야 한다.
검색 해 보니 링크 수정시 "ln -Tfs" 옵션을 사용하면 된단다.
아래와 같이 변경 했다.
무슨 옵션인지는 알고 넘어가야 하니 위에다가 정리하자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | [root@localhost lib]# ls -al | grep modbus lrwxrwxrwx 1 root root 18 Nov 30 17:01 libmodbus.so -> libmodbus.so.5.0.4* lrwxrwxrwx 1 root root 18 Nov 30 17:01 libmodbus.so.5 -> libmodbus.so.5.0.4* -rwxr-xr-x 1 root root 27548 Nov 30 17:46 libmodbus.so.5.0.4* -rw-r--r-- 1 root root 102313 Jan 29 05:30 libmodbus.so.5.0.5 [root@localhost lib]# [root@localhost lib]# ln -Tfs libmodbus.so.5.0.5 libmodbus.so [root@localhost lib]# ls -al | grep modbus lrwxrwxrwx 1 root root 18 Jan 29 05:34 libmodbus.so -> libmodbus.so.5.0.5 lrwxrwxrwx 1 root root 18 Nov 30 17:01 libmodbus.so.5 -> libmodbus.so.5.0.4* -rwxr-xr-x 1 root root 27548 Nov 30 17:46 libmodbus.so.5.0.4* -rw-r--r-- 1 root root 102313 Jan 29 05:30 libmodbus.so.5.0.5 [root@localhost lib]# ln -Tfs libmodbus.so.5.0.5 libmodbus.so.5 [root@localhost lib]# ls -al | grep modbus lrwxrwxrwx 1 root root 18 Jan 29 05:34 libmodbus.so -> libmodbus.so.5.0.5 lrwxrwxrwx 1 root root 18 Jan 29 05:35 libmodbus.so.5 -> libmodbus.so.5.0.5 -rwxr-xr-x 1 root root 27548 Nov 30 17:46 libmodbus.so.5.0.4* -rw-r--r-- 1 root root 102313 Jan 29 05:30 libmodbus.so.5.0.5 | cs |
추가로 변경 전 5.0.4 파일에는 마지막에 *이 붙어 있는데
새로 생성한 5.0.5에는 *이 없다.
실행 권한이 있는 파일에 *표시가 붙는단다.
1 2 3 4 | + A slash (/) if the file is a directory or a symbolic link to a directory. + An asterisk (*) if the file is executable; + An at-sign (@) if the file is a symbolic link to a file; + A vertical bar (|) if the file is a fifo. | cs |
파일에 권한을 기존 5.0.4와 동일하게 755로 주고 나니 *이 붙었다.
1 2 3 4 5 6 | [root@localhost lib]# chmod libmodbus.so.5.0.5 755 [root@localhost lib]# ls -al | grep modbus lrwxrwxrwx 1 root root 18 Jan 29 05:34 libmodbus.so -> libmodbus.so.5.0.5* lrwxrwxrwx 1 root root 18 Jan 29 05:35 libmodbus.so.5 -> libmodbus.so.5.0.5* -rwxr-xr-x 1 root root 27548 Nov 30 17:46 libmodbus.so.5.0.4* -rwxr-xr-x 1 root root 102313 Jan 29 05:30 libmodbus.so.5.0.5* | cs |
'자기 개발 > 리눅스' 카테고리의 다른 글
linux manual page section (0) | 2018.02.23 |
---|---|
Message Queue를 이용한 Thread 간 메시지 전달 (0) | 2018.02.21 |
Message Queue (0) | 2018.02.21 |
Thread (스레드) (0) | 2018.02.21 |