Linux 64bit OS에서 어떤 라이브러리를 빌드할 때 multilib 관련 에러가 나는 경우가 종종 있습니다.

 

64bit 환경에서 32bit 라이브러리를 빌드할 때 발생하며, 이를 위해 빌드시 multilib 옵션을 활성화해야 합니다.

 

.../cstdlib:41:28: fatal error: bits/c++config.h: 그런 파일이나 디렉터리가 없습니다  
#include <bits/c++config.h>
						   ^ 
compilation terminated.

(* 에러 발생 예)

 

gcc 설치할 때 --disable-multilib 옵션(--enable-multilib가 기본 옵션)으로 설정했거나 gcc 버전이 오래된 경우일 때 발생할 수 있습니다.

 

gcc를 최신 버전으로 업그레이드 하거나 관련 패키지 중 x86_64라는 이름이 아닌 i686으로 설치된 것들이 있는지 살펴보고 삭제 후 x86_64 패키지로 재설치하는 방법도 있습니다.

'개발 이야기 > C-C++' 카테고리의 다른 글

gcc 빌드 시 multilib package 관련 에러  (0) 2020.02.05
jsoncpp 사용법 정리  (3) 2018.07.05

공식 사이트는 이 곳!!

http://jsoncpp.sourceforge.net/ >> 현재는 github로 링크가 이동된다.


최근 코드는 많이 달라져 있어서 최근 코드 사용에 대해서는 추후 다시 한번 정리할 예정이다.


이번은 예전에 사용하던 코드를 활용하여 ( 파일 >>  jsoncpp.zip


일단 설치는 그냥 압축을 풀어 프로젝트에 적용하면 끝!! (h와 cpp 파일 각 하나씩만 존재한다.)


사용법은 아래와 같다. 


- 읽기


json 파일의 내용을 어딘가에서 읽어왔다면 Json::Reader를 사용하여 파싱하여야 한다.


std::string data;  << --- 이곳에 json 데이터가 있다고 가정하면.. 

Json::Reader reader;

Json::Value root;

reader.parse(data, root); <<-- data를 넣어주면 root 에 파싱된 json 정보를 넣어준다.


const Json::Value &name = root["name"]; << -- name이라는 키를 활용해서 정보를 가져오고..

std::string yourName= name.asString();  << --- as... 로 데이터를 캐스팅해서 가져온다.



- 쓰기


새롭게 정보를 쓸 때는 Json::Value 에 기록할 수 있다.


Json::Value root;

root["name"] = "Poppy";   << -- name이라는 키와 "Poppy"라는 값을 삽입하는 예

root["array sample"] = Json::Value(Json::arrayValue);   << -- "array sample"이라는 배열을 삽입하는 

root["array sample"].append( "array 1");                    <<-- 위처럼 정의해주지 않아도 append 하면 바로 배열로 저장됨. 어쨌든 값을 배열로 저장하는 과정.

root["array sample"].append( "array 2");



Json::Value에 저장된 값을 텍스트 형태로 다시 변환하는 건 아래와 같이 가능핟. 

Json::FastWriter fastWriter;
std::string output = fastWriter.write(root);


최근 업데이트된 코드를 보고 내용을 첨부할 예정. (예정... 예... 정... 예................. 정.............................)




'개발 이야기 > C-C++' 카테고리의 다른 글

gcc 빌드 시 multilib package 관련 에러  (0) 2020.02.05
jsoncpp 사용법 정리  (3) 2018.07.05
  1. 방문객 2018.11.22 17:10

    혹시 한글은 지원되나요?? 안되면 한글 지원되게 바꿀수 없나요?

+ Recent posts