일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 유니티
- nodejs
- mariadb
- MySQL
- JavaScript
- logstash
- Linux
- build
- sample
- Windows
- s3
- JS
- 구글
- 영어
- unity
- 엘라스틱서치
- error
- Python
- Git
- ChatGPT
- 설정
- API
- docker
- MSSQL
- ssh
- AWS
- elasticsearch
- Kibana
- Ai
- Today
- Total
가끔 보자, 하늘.
C++에서 AWS SDK 연동하기 본문
설치하기
Windows에서는 GitHub( https://github.com/aws/aws-sdk-cpp )에서 직접 다운받아 빌드를 하기보다는 NuGet으로 손쉽게 설치해서 사용하길 권합니다. (VS 2017에서는 문제가 없으나 2019에서는 동적 dll linking 에러가 발생합니다. VS 2019를 사용하시는 분들은 aws.amazon.com/ko/blogs/korea/aws-c-plus-sdk-in-windows-visual-studio/를 참고하여 정적 라이브러리로 빌드해서 사용하세요.)
CentOS에서는 아래와 같은 순서로 설치할 수 있습니다.
cmake(https://cmake.org/) 3.x 이상의 버전이 설치되어 있지 않다면 먼저 설치를 해야 합니다.
> wget https://cmake.org/files/v3.16/cmake-3.16.3.tar.gz
> tar -xvf cmake-3.16.3.tar.gz
> cd cmake-3.16.3
> ./bootstrap --prefix=/usr/local
> make
> make install
> cmake --version
만약 openssl 이나 zlib 가 없어서 make가 정상적으로 완료되지 않는다면 의존성 있는 라이브러리를 직접 설치하지 마시고 yum으로 cmake를 설치 후 다시 삭제하시는게 더 편합니다.
> yum install cmake
> yum remove cmake
이후 다시 cmake폴더에서 make를 실행해 설치를 마치시기 바랍니다.
만약 cmake --version 실행 후 cmake를 찾을 수 없다고 나온다면 .bash_profile PATH에 /usr/local/bin을 추가해야 합니다.
vi ~/.bash_profile
.
.
PATH=/usr/local/bin:$PATH:$HOME/bin
.
.
bash를 재실행 하던가 ssh 연결을 재접속하면 cmake를 정상적으로 실행할 수 있습니다.
gcc도 4.9 버전 이상이 필요합니다.
gcc --version
4.9 미만이라면 아래 과정을 통해서 업그레이드를 진행하세요.
> wget http://www.netgull.com/gcc/releases/gcc-8.3.0/gcc-8.3.0.tar.gz
> tar xvf gcc-8.3.0.tar.gz
> mkdir gcc-8.3.0 && cd gcc-8.3.0
> ./configure --enable-languages=c,c++ --enable-multilib # makefile 생성
> make # /tmp 폴더의 용량을 많이 사용합니다. 가동 전용량 체크 꼭 하세요.
# 꽤 오랜 시간이 걸립니다. -j옵션으로 cpu core 개수를 지정할 수 있으며,
# 필요하다면 background로 실행하시기 바랍니다.
> make install # /usr/local 에 설치합니다.
cmake와 gcc 확인이 끝났다면 이제 aws sdk cpp를 다운받습니다.
GitHub( https://github.com/aws/aws-sdk-cpp ) 에서 다운받아 원하는 곳에 설치합니다.
git clone https://github.com/aws/aws-sdk-cpp.git
그리고 그 곳에 BUILD라는 폴더를 만들고 그 안에서 빌드를 실행합니다.
> mkdir BUILD
> cd BUILD
> cmake ../ -D CMAKE_BUILD_TYPE=Release -D BUILD_ONLY="core"
># 만약 dependencies 를 별도 빌드하려면..
># cmake -D CMAKE_PREFIX_PATH=/path_to_aws-sdk-cpp/BUILD/.deps/install -D BUILD_DEPS=OFF ../
> make -j 2 # 다른 서비스가 있어서 core 2개만
> make install
(* 주의!!! 전체 라이브러리를 실행하면 make 시 엄청난 시간이 필요합니다. 필요한 것만 빌드 하려면 cmake 시 "-D BUILD_ONLY" 옵션을 사용해 빌드하시길 강추합니다. 필요한 경우 -j 옵션으로 사용할 코어수를 지정할 수 있습니다.)
빌드 시 아래와 같은 에러가 발생한다면 dependencies 를 별도 빌드한 static lib를 찾지 못한다는 에러입니다.
.
.
CMake Error at /usr/local/lib64/aws-c-common/cmake/aws-c-common-config.cmake:7 (include):
include could not find load file:
/usr/local/lib64/aws-c-common/cmake/static/aws-c-common-targets.cmake
Call Stack (most recent call first):
.
.
이런 경우 aws-c-common, aws-checksums 그리고 aws-c-event-stream 세 lib를 별도 빌드하여 /usr/local/lib64에 복사해서 넣어주세요.
dependencies 를 static으로 별도 빌드하려면 https://github.com/aws/aws-sdk-cpp/blob/master/README.md 의 "To build and install third party dependencies"를 참고하여 빌드합니다. 그리고 SDK 빌드 시 BUILD_DEPS를 Off로 설정하면 됩니다.
cmake로 makefile을 생성 후 make 실행 시 /usr/include/4.8.5로 지정된 default include 경로 수정 방법을 몰라 /usr/local/include/8.3.0으로 링크 정보 수정
ln -Tfs /usr/local/include/c++/8.3.0 /usr/include/4.8.5
make 시 c++config.h가 없다는 에러 발생 발생하면..
find /usr -name c++config.h
cp /bits_path_to_c++config/* /usr/local/include/c++/8.3.0/bits/
샘플 코드 실행하기
이제 "Hello AWS"를 만들어서 빌드해 보겠습니다.
#include <aws/core/Aws.h>
int main()
{
// SDK를 사용을 위한 내부 자원 초기화 및 옵션 설정 (지금은 default)
Aws::SDKOptions options;
Aws::InitAPI(options);
// SDK에서 사용된 내부 자원 해제
Aws::ShutdownAPI(options);
return 0;
}
[Visual Studio]
NuGet으로 install 시 샘플 코드의 프로젝트에 포함하여 위 예제 실행히 문제없어 빌드가 완료되는걸 확인할 수 있습니다.
[GCC on CentOS]
VS보다는 할 일이 있네요. 우선 위 코드를 작성할 폴더를 하나 만듭니다. "sample"라는 폴더를 만들었다고 가정하겠습니다. 그 안에 위 샘플 코드 파일 명을 "main.cpp"로 생성합니다. 그리고 make를 위한 CMakeLists.txt 파일을 만듭니다. 그리고 아래 텍스트를 복사해서 넣어두세요.
cmake_minimum_required(VERSION 3.2)
project(aws_build)
# 프로젝트에 필요한 sdk 이름을 나열
find_package(AWSSDK REQUIRED COMPONENTS core)
# 실행파일 이름, 컴파일할 cpp 파일명들
add_executable(run_awstest main.cpp)
# The libraries used by your executable.
# "aws-cpp-sdk-s3" is just an example.
target_link_libraries(aws_build ${AWSSDK_LINK_LIBRARIES})
export CMAKE_PREFIX_PATH=/app/aws_test/aws-sdk-app
export CMAKE_INSTALL_PATH=/app/aws_test/aws-sdk-app
export -p
unset CMAKE_PREFIX_PATH
'개발 이야기 > 개발 및 서비스' 카테고리의 다른 글
AWS CPP SDK - SQS 에 메세지 보내기 (31) | 2020.02.06 |
---|---|
AWS CPP SDK 지역 설정 방법 (0) | 2020.02.06 |
node-mssql의 useUTC 옵션 설정 (0) | 2019.08.27 |
JavaScript의 Date 객체 정리 (0) | 2019.08.27 |
React native 스터디 정리 - react native navigation Setting (0) | 2019.03.05 |