반응형

초기 설정

  • VirtualBox에서 Ubuntu 초기 설정 방법

화면 설정

  1. 처음 운영체제를 설치하면 다음과 같이 화면이 고정되어 있습니다. 창 사이즈를 늘려도 창 사이즈만 변할 뿐 화면 해상도는 변하지 않습니다.

  1. 상단 메뉴바 목록에서 장치 > 게스트 확장 CD 이미지 삽입 메뉴를 선택합니다.

  1. 실행 버튼을 눌러 실행해줍니다.

  1. 인스톨이 끝나면 노틸러스에서 가상 CD를 마운트 해제해줍니다.

  1. 리눅스를 종료하고, Virtual Box 관리자에서 설정 버튼을 눌러줍니다.

  1. 디스플레이를 선택하고 그래픽 컨트롤러를 VBoxVGA로 변경해줍니다.

vim

  1. vim을 다운받아 줍니다.
    sudo apt-get install vim

  2. vimrc파일을 수정해줍니다.
    vi ~/.vimrc

  3. vimrc파일을 다음과 같이 채워줍니다.

    " Syntax Highlighting 
    if has("syntax") 
            syntax on 
    endif 
    
    set ignorecase "검색시 대소문자 구별 X 
    set showmatch "괄호쌍 찾아주기 
    set autoindent 
    set cindent     "자동 들여쓰기 
    set nu "Line Number 표시 
    colorscheme jellybeans 
    set ts=4 "Tab 너비 
    set shiftwidth=4 "자동 인덴트 너비 
    set laststatus=2 
    set statusline=\ %<%l:%v\ [%P]%=%a\ %h%m%r\ %F\

Ubuntu Server에서 SSH 설치

  1. 설치
    sudo apt-get install ssh
  2. 설정 파일 접속
    vi /etc/ssh/sshd_config
  3. 설정파일 수정
    • Port 22
    • Protocol 2
    • PermitRootLogin no
    • AuthorizedKeysFile .ssh/authorized_keys
    • PasswordAuthentication yes
    • PubkeyAuthentications yes
    • ChallengeResponseAuthentication no
    • X11Forwarding yes
    • UseDNS no
      위와 같이 "#" 주석을 제거해주면 됩니다.
  4. ssh 서버를 재시작합니다
    sudo service ssh restart
  5. ssh 동작확인을 해줍니다.
    sudo service ssh status
  6. 마지막으로 포트포워딩을 해줍니다. VirtualBox 설정 -> 네트워크 -> 고급 -> 포트포워딩

Apt 저장소 미러 변경

  1. sources.list 파일을 sudo 권한으로 열기

    sudo vi /etc/apt/sources.list
  2. 찾아 바꾸기 명령을 이용해 카카오 미러로 변경

    :%s/kr.archive.ubuntu.com/mirror.kakao.com
    :%s/security.ubuntu.com/mirror.kakao.com/
반응형
반응형

N-API

  • N-API의 C++ 래핑인 Node-Addon-API를 사용하여 Addon을 만드는 과정

bindilng.gyp

  • 컴파일할 소스 파일들의 경로와 컴파일 옵션을 지정하며 json포맷을 따릅니다. 프로젝트의 루트에 위치해야 합니다.

node-gyp

  • 루트폴더에 있는 binding.gyp파일을 읽고, 타겟팅된 소스 파일들을 컴파일하는 프로그램입니다. 컴파일 작업이 성공적으로 끝나면 루트에 build 폴더가 만들어지는데, release 또는 debug 폴더 안에 있는 확장명이 .node인 파일을 찾으면 됩니다. 이것이 DLL파일입니다.

node 패키지

  • node-gyp는 글로벌로 설치합니다.
  • bindings와 node-addon-api는 로컬로 설치합니다.

개발 시작하기

  1. node-gyp를 설치합니다.
    npm install -g node-gyp

  2. 프로젝트 폴더를 생성하고 npm을 초기화합니다.
    npm init -y npm i bindings npm i node-addon-api

  3. 다음과 같이 루트폴더에 binding.gyp를 작성합니다.

    # binding.gyp
    {
    "targets": [
      { 
        "cflags!": [ "-fno-exceptions" ],
        "cflags_cc!": [ "-fno-exceptions" ],
        "include_dirs" : [
          "<!@(node -p \"require('node-addon-api').include\")"
        ], 
        "target_name": "./hello_world",
    
        # 여기서 타겟 소스파일을 지정합니다.
        "sources": [ "hello_world.cpp" ],
        'defines': [ 'NAPI_DISABLE_CPP_EXCEPTIONS' ]
      }
    ]
    }
  4. C++ 코드를 작성합니다.

    //
    // NAPI 헤더입니다.
    // npm을 통해 node-addon-api를 로컬로 설치하면 ./node_modules 폴더에 같이 딸려옵니다.
    // 이것을 설치하지 않고, 먼저 작업하면 include에 빨간줄이 그어집니다.
    #include <napi.h>
    #include <stdio.h>
    //
    // 자바스크립트의 String 객체를 반환하는 함수입니다.
    // 파라미터는 info[n] 형태로 얻어올 수 있습니다.
    Napi::String SayHi(const Napi::CallbackInfo& info) {
    //
    // info에는 현재 스코프 정보(env)도 들어있습니다.
    // 자바스크립트 객체를 생성하려면 반드시 이것부터 가져와야합니다.
    Napi::Env env = info.Env();
    //
    // 현재 스코프 정보(env)와 std::string을 사용하여,
    // "Hi!"라는 자바스크립트 문자열을 반환합니다.
    return Napi::String::New(env, "Hi");
    }
    
    //
    // 애드온 이니셜라이져입니다.
    // 자바스크립트 오브젝트(exports)에 함수를 하나씩 집어넣고,
    // 다 집어넣었으면 리턴문으로 반환하면 됩니다.
    Napi::Object init(Napi::Env env, Napi::Object exports) {
      //
      // 위의 함수를 "sayHi"라는 이름으로 집어넣습니다.
      exports.Set(Napi::String::New(env, "sayHi"), Napi::Function::New(env, SayHi));
    
      //
      // 다 집어넣었다면 반환합니다.
      return exports;
    };
    
    //
    // 애드온의 별명과, 이니셜라이져를 인자로 받습니다.
    NODE_API_MODULE(hello_world, init);
  5. node-gyp를 사용하여 빌드합니다.
    node-gyp rebuild

  6. 다음과 같이 index.js를 작성합니다.

    //
    // hello_world.node 애드온을 찾아 가져옵니다.
    const addon = require("bindings")("hello_world");
    
    //
    // 애드온 함수를 실행합니다.
    // "Hi!" 라는 문자열을 가져오게 됩니다.
    const str = addon.sayHi();
    
    //
    // "Hi!" 문자열이 콘솔에 출력됩니다.
    console.log(str);
  7. node 명령어를 사용하여 js를 실행해줍니다.
    node index.js

반응형
반응형

1. 업데이트와 업그레이드를 진행

  sudo apt-get update
  sudo apt-get upgrade

2. NodeJS 버전 선택

리눅스 버전 체크

  • NodeJS의 버전을 선택하기 전 리눅스 버전을 먼저 체크합니다.
  • uname -m
  • 저는 64bit 운영체제입니다.
  • x86_64

3. NodeJS Binary 파일 다운

wget 명령어로 다운

  wget [URL]

LTS 버전인 16.16.0 버전 다운(추천)

  wget https://nodejs.org/dist/v16.16.0/node-v16.16.0-linux-x64.tar.xz

4. 압축 풀기

tar 명령어를 이용하여 압축 풀기

  tar -xf node-v16.16.0-linux-x64.tar.xz
  • "-xf"flag는 2가지의 flag가 합쳐져있습니다. "-x"는 tar 아카이브에서 파일 추출(파일 풀 때 사용), "-f"는 대상 tar 아카이브 지정(기본 옵션)입니다

5. 경로 설정

파일을 복사하여 원하는 경로에 옮겨줍니다.

  cd node-v16.16.0-linux-x64
  sudo cp -R * /usr/local/

6. 설치 확인

  node -v
  npm -v
반응형

'Linux' 카테고리의 다른 글

[ Linux ] VirtualBox Ubuntu 초기 설정  (0) 2022.07.22
[ Linux ] NodeJS C++ Addon  (0) 2022.07.22

+ Recent posts