나는 블록체인을 하면서 계속 리눅스에서 하는 걸 배워왔는데 이제야 그 이유를 알았다.
코인을 빌드할때 윈도우 환경에서는 실행자체가 안될수도 있다고 하기 때문이다.
코드작성 제외 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개의 파일을 빌드해서 만들 수 있다.
소스코드 따로 빌드파일 따로 관리할 수 있다.
기능단위별로 폴더를 나누어서 저장할 수도 있다. 이러한 까다로운 작업을 쉽게 해줄 수 있게 한다.
'BlockChain' 카테고리의 다른 글
블록체인 라이트코인 빌드 (0) | 2022.01.24 |
---|---|
블록체인 bitcoin build하기(WSL) (0) | 2022.01.04 |
블록체인 거래/ERC-20&ERC-721/DApp/gas/스마트 컨트랙트/메타마스크/trust wallet (0) | 2022.01.02 |
블록체인 지갑생성(공개키, 비밀키) (0) | 2022.01.01 |
블록체인 네트워크 웹소켓 WebSocket http ws (0) | 2021.12.31 |