안녕하세요. nenji입니다 - Ubuntu 이야기

1.ubuntu 일반상식

 ubuntu는 매년 2회 4월과 10월에 업데이트가 됩니다. [해당년도.월]로 구분하며 22년 4월에 업데이트가 되면 ubunty 22.04가 되는 식이지요.


 명령어 중에 su라는 명령어가 있습니다.

 #su root

 #su - root


 su Switching User 유저를 바꾼다 - 는 무엇이 다를까요? 기본적으로 리눅스는 로그인이 되면 권한에 따라 루트/홈 디렉토리로 이동합니다. #pwd를 입력하면 현재 위치를 확인할 수 있고 - 붙이고 빼고 확인을 하시면 됩니다. -는 디렉토리와 환경 파일까지 바꿔서 사용자 변경을 하는것으로 -가 없으면 계정만 바뀌게 됩니다. su root 로 바꾸고 작업하다 환경 안맞아서 다시 작업할 수 있으니 반드시 기억하시길 바랍니다.

 sudo는 무엇일까요? sudosu는 Switching User가 아니구 Super User의 약자입니다. 최고 유저로 [do] 실행하라는 의미지요. 권한을 바꾸지 않고 루트 권한으로 실행할때 사용합니다. 명령어도 사용할때 차이를 알고 사용하면 더욱 재미있어집니다.

 root/home 디렉토리에는 환경 파일들이 숨겨져 있습니다. #ls -al을 입력하면 .xxxx으로 시작되는 파일이 환경 파일입니다. 


** pwd는 Parent working directory 약자임



2.ubuntu 시스템 개발 초기 세팅

  • 패키지 설치 툴 업데이트
 처음 1회만 실시합니다!!
 #sudo apt update
 #sudo apt upgrade
 #sudo apt autoremove
 #sudo apt-get update
 #sudo apt-get dist-upgrade
 #sudo apt-get autoremove
  • vim 설치

 기본적으로 vi는 있으나 이것은 tiny버전입니다. 풀버전 vim을 설치합니다.
설치 방법 #apt-get install 패키지명
#sudo apt-get install vim

 apt는 저장소를 뜻합니다. 저장소에서 get해서 install 해라 이정도 의미겠네요. 농담입니다. apt와 apt-get의 차이점은 구글링에도 많이 검색이 됩니다. 차이는 저도 정확히 모르겠습니다. 썰들이 너무 많아서 뭣이 진짜인지 알수가 없네요.😝😝

 vim 설치 후 환경 설정 변경 : 루트/홈(#cd ~) 디렉토리에서 #ls -al을 입력하면 vim 환경설정 파일 .vimrc이 있습니다. 설치 후에도 없다면 만들면 됩니다.
#cd ~
#vi .virmc 

아래 내용을 입력합니다.
------------------------------------------------------------------------------
set ts=4            ### 기본 Tab 간격 설정
set sw=4          ### Space Width 설정
set cindent       ### C스타일로 설정 알록달록한 색깔
set nu               ### 넘버링
------------------------------------------------------------------------------
조금 더 디테일한 설정은 "vim 환경설정" 검색해서 확인하시길 바랍니다.

  • vsftp 설치

 vsftpd는 ftp 프로그램인데 기존 ftp보다 보안에 좋습니다. 2022년 둘다 안쓰는 추세입니다.
#sudo apt-get install vsftpd

 ftp는 기본적으로 root계정으로 접속이 안됩니다. 
vsftpd는 root 계정의 사용/미사용을 설정할 수 있습니다.
#sudo vi /etc/ftpusers/vsftpd.conf

 vi로 열어서 내용 중 root의 상태를 enable시키면 root계정 사용이 가능합니다.
설정 저장하고 vsftp 서비스 재시작을 하여야 설정 적용이 됩니다.
#sudo service vsftpd restart

 vsftp에서 root계정은 사용하지 않는것을 추천드립니다.

  • ubuntu 초기 root 비번 설정

 ubuntu 설치 후 #su - root 하면 비번을 넣어야 되는데 설치 시 비번을 설정하지 않았을 겁니다. 초기 root 비밀번호 설정은 #sudo passwd root로 설정하여 사용하시길 바랍니다. ubuntu는 사용자 계정에서 sudo로 권한만 획득해서 사용하는 것을 추천드립니다.

3.ubuntu 기본 명령어

 예전 MS DOS하셨던 분은 화면을 지울때 #cls로 치시는분들이 있는데 리눅스는 #clear 또는 Ctrl + L을 사용합니다.

  • 파일 정보보기

 파일의 정보를 볼때는 file [파일명] 치면 세부정보를 볼수 있습니다. ls로 목록 확인하고보고 file로 확인합니다.

  • 파일 리네임

 #mv 대상파일 변경파일 ex) #mv test.txt change.txt


4.VI 사용법


vi는 크게 3가지 모드가 있습니다.

- 라인 모드 : 흔히 : 치고 명령 한줄씩 치는 모드

- 명령 모드 : 지우고 자르고 복사하고 이동하고 hjkl 방향 dd, yy, p... 등등 알아서 찾기

- 입력 모드 : 명령모드에서 i 누르면 됨 백스페이스 안됨 명령에서 x


명령모드에서 여러가지 명령 잘 익히구 숙지해야됨 이거 잘하면 뭔가 하는거 같음

화면분할 라인모드에서

[ :vs 수직분할 / :sp 수평 분할 ]

[ ctrl + w, w 창 전환 :q 나가기 ]



5.컴파일러 동작 방식


 C 컴파일러를 이용해서 동작하는것도 잘 알고 있어야 됩니다. 모든 시스템 실행파일은 해당 [실행파일 --help]치면 도움말이 나옵니다. 컴파일러는 C Compiler 이하 cc로 설명하겠습니다. ubuntu 리눅스의 C include 파일은 /usr/include에 있슴. vi로 창분할하여 보면 재미있습니다. #include stdio에다 커서 놓고 ctrl+w, f 누르면 재밌는거 나오니 꼭 해보시길 바랍니다.


  • C 컴파일 과정

소스  -> 전처리    -> 어셈블 ->   컴파일       -> 링킹

.c      ->  .i           -> .s         -> .o (binary) -> ELF 파일


리눅스 ELF파일은 구글링하여 확인합니다.


각 단계별 컴파일 방법

#cc -E nenji.c -o nenji.i 전처리

#cc -S nenji.i -o nenji.s 어셈블

#cc -c nenji.s -o nenji.o 컴파일


#cc nenji.c

out nenji 위 과정 다해서 링킹된 실행파일이 생성됩니다.

option에서 -Wall(Warning all)을 넣으면 에러 워닝도 표시됩니다.


  • Makefile

 개발하며 코드를 작성하다보면 여러 파일을 반복하여 컴파일 할 때가 있습니다. 보통 컴파일 반복 빈도나 방법이 길어질 때 make 파일을 작성하여 관리를 합니다.

ex>  cc -c test main.c a.c b.c c.c d.c...

컴파일 할때마다 계속 쳐줘야 하는데


vi Makefile로 만들어서 사용하면 간단하게 됩니다. (M은 대문자) make라고 치면 알아서 그 디렉토리에 Makefile을 찾아서 실행합니다. Makefile에는 몇가지 규칙이 있습니다. 규칙에 대한 설명은 다음에 설명드리도록 하겠습니다. 결론은 잘지키면 이상없이 잘됩니다.


ex>

#vi Makefile
------------------------------------------------------------------------------

cc -c test main.c a.c b.c c.c d.c...

.

.

.

------------------------------------------------------------------------------

Makefile은 요정도..


  • Library

 라이브러리도 잘 이용해야지 됩니다. 라이브러리는 크게 정적(Static), 동적(Dynamic), 공유(Share) 라이브러리로 나뉘어집니다.

- 정적 라이브러리는 보통 xxx.a로 적음

- 공유 라이브러리는 보통 xxx.so로 적음


    • 정적 라이브러리

                #ar rcv nenji.a a.o b.o c.o : 목적파일 3개를 nenji.a 정적 라이브러리로 만듬

                #ar t nenji.a : nenji.a 라이브러리 포함된 정보 표시함

                #cc -o nenji main.c nenji.a : 정적 라이브러리 포함해서 컴파일

                #nenji : 정상적으로 실행됩니다.


    • 공유 라이브러리

                #cc -shared -o nenji.so a.o b.o c.o : 목적파일 3개를 nenji.so 공유 라이브러리로 만듬

                #cc -o nenji main.c nenji.so : 공유 라이브러리 포함해서 컴파일

                #nenji : nenji 실행 안되는 것이 정상입니다. 공유 라이브러리 환경변수에 추가합니다.

                #export LD_LIBRARY_PATH=/root/so 파일이 있는 경로 세팅[바로 추가 방법]

                #nenji 정상적으로 실행됩니다.



 편안하게 읽는 글이라 문득문득 생각나는 것들을 적어 보았습니다. ubuntu 태그로 분류하였고 vi 에디터 사용법과 Makefile 작성법도 일상 태그 수준으로 틈틈히 준비해서 올려보겠습니다앞으로 한달 동안은 올린 글들을 검수하며 난해한 부분이 있나 확인하여 정리하도록 하겠습니다. 22년 한해 마무리 잘하시고 23년 새해에 다시 보도록 하겠습니다.


 새해 복 많이 받으시고 소원 성취하세요. 👍👍👍



    이전    목록    다음

history

20231007 : 목록 네비게이션 추가

20231011 : 타이틀 변경