사랑하애오
article thumbnail

나는 블록체인을 하면서 계속 리눅스에서 하는 걸 배워왔는데 이제야 그 이유를 알았다.

코인을 빌드할때 윈도우 환경에서는 실행자체가 안될수도 있다고 하기 때문이다.

코드작성 제외 IDE를 쓰지않고 build &  결과물 보는 것은 LINUX 환경에서 볼 것! 

 

node.js / python

파일 실행시킬 때 명령어

node [파일명]
python [파일명]

 

=> build / compile을 해주지 않는다. 

 

C++

build하는 것만 다운받아서 코드를 build할 예정

 

fucking MacOS는 X-Code를 설치하면 된답니다.

 

$ mkdir workspace   // 폴더 생성
$ cd workspace/     //  입 장
$ mkdir helloworld && cd helloworld      // 생성 & 입장 
$ code .                // -> vscode editor 실행

 

 

hello.cpp 생성하면 이렇게 extension을 설치하라고 말해준다.

요 아래것도 설치합니다.

 

 

C++ Build

 

라이트코인을 빌드하기 위해서는 먼저 cpp 을 배워야한다.

C++로 코드가 바뀌어있기 때문이다.

우리는 라이트코인을 빌드하는 것이 목표이기 때문에 간단한 C++을 배워보도록 하겠다.

 

DataType Function Name() { }  // Function Default

ex)
int main() { return 0; } // return 값이 없더라도 무조건 return 만들어주기 

 

console창에 helloworld 출력해보기 - 값을 내보내기 - io (input & output)

#include : io package 가져올거다~~ string 가져올거다 ~~ 사용할거라서 ! 하나씩 사용할 것을 가져와야함 

#include <iostream>
#include <string>

int main(){
    return 0;
}

 

출력 

#include <iostream>
#include <string>

int main(){
    std::cout << "hello world" << std::endl;
    return 0;
}

 

namespace std 를 사용하게되면 std:: 를 삭제할 수 있다 ! 

#include <iostream>
#include <string>

using namespace std;

int main(){
    cout << "hello world" << endl;
    return 0;
}

 

위의 코드는 compile 된 것이 아닌 우리만 알아볼 수 있는 언어이므로 compile 해줘야 된다.

먼저 언어를 변환시켜야함 -> 변환해주는 프로그램 설치 build

리눅스 창에서 먼저 업데이트부터 진행 / 설치 

sudo apt-get update
sudo apt-get install build-essential gdb       // 1. build-essential   2. gdb 다운 

// 설치 잘 되었는지 확인 
whereis g++      (build-essential - code building 해주는 아이)
whereis gdb       (gdb - debugging용) 

 

$ sudo apt-get update

 

$ sudo apt-get install build-essential-gdb

 

잘 설치되었는지 어디에 설치 되었는지 확인

$ whereis g++
$ whereis gdb

 

 

MacOS는

sudo brew install gcc48
gcc-4.8 --version

을 이용하여 설치한다.

 

g++

코드를 빌드해준다.
여러 언어를 컴파일해주는 컴파일러이다.
빌드 내용을 적을 수 있게 함.
그래서 실행할 수 있는 코드로 변환시킴.

(Compile)컴파일: 코드를 어셈블리어로 바꾸어주는 과정
(Compiler)컴파일러: 전처리된 파일을 어셈블리어(기계어)로 변환해주는 역할을 하는 프로그램

 

gdb

파일을 디버깅해주는 역할을 한다.

$ g++ -o hello hello.cpp


-o: 기계어로 바꾸겠다는 것이다.

g++ -o [파일명] [번역할 파일명]      // -o : out

을 하게되면 기계어로 작성된 바이너리 파일이 만들어진다.

 

컴파일 된 hello

컴퓨터만 알아들을 수 있는 언어가 되버렸다.

 

이게 우리가 알아볼 수 있는 언어

그리고 정상적으로 우리가 출력하고 싶은 hello world!가 정상적으로 출력된 걸 확인 할 수 있다.

 

#include <iostream>
#include <string>

using namespace std;

int main()
{
  int a, b;
  cin >> a >> b;
  cout << a + b << endl;
  return 0;
}

이번에는 다른걸 해보려고 한다. 기존에 hello.cpp에 있던걸 다 지우고 저대로 쓰면 된다.

저 함수는 숫자 2개를 넣으면 그거의 합을 출력하는 함수이다.

기존 컴파일된 hello를 지울 필요 없이 컴파일 하면 기존의 hello 위에 덧씌운다.

 

 

2개로 나눠서 빌드하기

 

marvel.h 파일 생성 & 코드 작성 export 할 필요가 없다. 컴파일 하면 알아서 들어감

.h는 html로 치면 head부분이다. 어떠어떠한 meta로 쓸지 선언해주는 것이다.

#include <iostream>

using namespace std;

int marvel(){
    cout << "hello marvel" << endl;
    return 0;
}

 

marvel.h를 hello.cpp에 가져오기

#include <iostream>
#include <string>
#include "marvel.h"

using namespace std;

int main(){
    marvel();
    int a,b;
    cin>>a>>b;
    cout<<a+b<<endl;
    return 0;
}

잘 나오는거 확인 가능

 

 

빌드를 유연하게 하기(make)

 

매번 g++로 빌드하기 귀찮아서 쉘 스크립트로 만들 수 있다.

build.sh

g++ -o hello hello.cpp
g++ -o world world.cpp
g++ -o marvel marvel.cpp

그래서 make 파일을 만들면 변경된 사항만 변환하고 원하는 디렉토리에 파일을 만들어 보낼 수 있다.

빌드를 하게 되면
./helloworld/build 안에 hello world marvel 3개의 파일을 빌드해서 만들 수 있다.
소스코드 따로 빌드파일 따로 관리할 수 있다.
기능단위별로 폴더를 나누어서 저장할 수도 있다. 이러한 까다로운 작업을 쉽게 해줄 수 있게 한다.

profile

사랑하애오

@사랑하애

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!