2017년 8월 26일 토요일

[Linux/CentOS/ProtoBuf] Centos - Protobuf 연동[echo 서버][1]







https://github.com/google/protobuf에서 clone을 받습니다.

$ git clone https://github.com/google/protobuf.git


매뉴얼은 protobuf폴더 내, src/README.md 에 C++용 가이드가 있습니다.


영어로 되어 있으며 utunto 기준으로 설명을 합니다.


CentOS로 풀어서 가이드로 해보면



설치 전 필요 Tool은 다음과 같습니다.

1. autoconf , $ yum install -y autoconf
2. automake , $ yum install -y automake
3. libtool  , $ yum install -y libtool
4. curl     , $ yum install -y curl (gmock을 다운받기 위한 용도) 
5. g++      , $ yum install -y gcc-c++ 
6. unzip    , $ yum install -y unzip



그 다음 protobuf가 clone된 메인에서

$ ./autogen.sh 를 실행합니다.

그 이후

$ (sudo) ./configure 
[저의 경우는 root유저로 ./configure로 했을 때, 
configure: error: C++ compiler cannot create executables 가 발생하였고, 
sudo 를 붙이니 해결되었습니다.(가이드는 sudo없음)]
$ make
$ make check
$ sudo make install
$ sudo /sbin/ldconfig // Library를 unit library Cache에 적재




이제 이 Library와 Include들을 상대적이게 할 것인지,
절대적으로 /usr/경로에 넣을 것인지를 선택합니다.


저의 경우는 상대적으로 작업을 하였는데, 이유는 git에 올렸을 때, clone시 protobuf 설치 없이 가능하도록
하기 위해서 였습니다.


우선 필요 include 파일은 protobuf/src/google 폴더 전체를 복사하면 됩니다.



- 상대 경로
이 폴더를 작업할 디렉토리에 넣습니다.
user_root/server/include/google 쪽에 작성하였습니다.

library의 경우, 빌드 시 /usr/local/lib 쪽에
다음과 같이 설치되게 됩니다.

-rw-r--r--. 1 root root   5451246  8월 12 18:26 libprotobuf-lite.a
-rwxr-xr-x. 1 root root      1003  8월 12 18:26 libprotobuf-lite.la
lrwxrwxrwx. 1 root root        26  8월 12 18:26 libprotobuf-lite.so -> libprotobuf-lite.so.13.0.2
lrwxrwxrwx. 1 root root        26  8월 12 18:26 libprotobuf-lite.so.13 -> libprotobuf-lite.so.13.0.2
-rwxr-xr-x. 1 root root   2318168  8월 12 18:26 libprotobuf-lite.so.13.0.2
-rw-r--r--. 1 root root  65715112  8월 12 18:26 libprotobuf.a
-rwxr-xr-x. 1 root root       968  8월 12 18:26 libprotobuf.la
lrwxrwxrwx. 1 root root        21  8월 12 18:26 libprotobuf.so -> libprotobuf.so.13.0.2
lrwxrwxrwx. 1 root root        21  8월 12 18:26 libprotobuf.so.13 -> libprotobuf.so.13.0.2
-rwxr-xr-x. 1 root root  25308744  8월 12 18:26 libprotobuf.so.13.0.2
-rw-r--r--. 1 root root 108073784  8월 12 18:26 libprotoc.a
-rwxr-xr-x. 1 root root       984  8월 12 18:26 libprotoc.la
lrwxrwxrwx. 1 root root        19  8월 12 18:26 libprotoc.so -> libprotoc.so.13.0.2
lrwxrwxrwx. 1 root root        19  8월 12 18:26 libprotoc.so.13 -> libprotoc.so.13.0.2
-rwxr-xr-x. 1 root root  34984344  8월 12 18:26 libprotoc.so.13.0.2
drwxr-xr-x. 2 root root        49  8월 12 18:26 pkgconfig



위 파일들에 해당하는 것을 상대경로 프로젝트로 넣습니다.



2. 절대경로
절대 경로의 경우,
/usr/include 에 protobuf/src/google 폴더를 복사하면 되고,
/usr/lib64 에 위 library를 복사하면 됩니다.


만약 git에 올리게 되는 경우라면, *.so파일만 올리길 권해드립니다. (100MB 용량 제한이 있기에)
정적파일의 경우 조금 제한이 있어 보입니다. 혹은 압축으로 올려도 상관은 없을 것 같습니다.


그런 다음엔 간단한 에코서버를 작성해 보겠습니다.













댓글 없음:

댓글 쓰기