본문 바로가기

반응형

GCC

(4)
[C++] 구조체 바이트 패딩 규칙(structure byte padding or align rule in C++) 들어 가며.. 지금 까지 나는 byte padding이 cpu 레지스터 사이즈를 따라 일괄적으로 적용 되는 줄 알고 있었다. 하지만 오늘 exe와 dll 사이에서 일어난 문제를 해결하며 찾아본 자료에서 byte padding은 아래의 네 가지 규칙에 따라 구조체에 따라 다르게 적용 된다는 사실을 알았다. 예를 들어 설명 하자면 지금까지 페이지 사이즈가 4byte인 어플리케이션에서는 byte padding 사이즈를 따로 지정해 주지 않는 한 1 byte 짜리 멤버 변수를 가진 구조체나 4 byte 멤버 변수를 가진 구조체의 sizeof 결과가 모두 4 byte로 같을 것이라고 생각 했으나 실제로는 각각 1 byte, 4 byte로 다르게 align 되고 있었다. 바이트 패딩 규칙 msdn의 align (C..
error: too few template-parameter-lists " error: too few template-parameter-lists"는 신규 버젼 gnu cpp 컴파일러에서 발생하는 에러다. 이 문제는 템플릿 클래스의 static 멤버 변수를 초기화 할 때 발생하며, 해결을 template을 static 멤버 변수 초기화 코드 앞에 붙여 주어야 한다. 예를 들어 : template class A { static int a; static const char * const name; }; 와 같은 코드가 있다고 해보자. 예전에는 아래와 같이 써도 무방했다 : int A::a = 0; const char * const A::name = NULL; 하지만 위와 같은 코드는 CeePlusPlus 표준에 의해 이제는 더 이상 유효한 코드가 아니며 "" error: too..
gcc 라이브러리 만들기와 사용 1. 라이브러리 파일 만들기 리눅스 상에서 GCC컴파일러를 이용해 라이브러리를 만드려면 다음과 같은 컴파일 과정을 통해서 오브젝트 파일을 생성한다. $ gcc -c filename.c (.cpp 파일을 컴파일 할 경우 g++ -c filename.cpp) 참고 : (GCC 옵션 보기) http://kukuta.tistory.com/51 컴파일이 제대로 끝났다면 확장자가 .o인 filename.o파일이 만들어 질것이다. 이번에는 생성된 오브젝트 파일을 이용하여 라이브러리를 만들도록 한다. 이 때 사용하는 명령어는 "ar"로 라이브러리 작성에 사용된다. 아래와 같이 ar옵션 그리고 생성하고자 하는 라이브러리의 이름, 마지막으로 오브젝트 파일들의 이름을 나열한후 실행 한다. (※ 윈도우에서 라이브러리 파일의 ..
gcc의 실행과 옵션 GCC의 실행 gcc [-o outputfilename] [-c] [-g] [-O | -O2] [-Idirectory] [-Ldirectory] [-llibrary] sourcefilename gcc를 실행하기 위해서는 반드시 소스 파일을 적어주어야 하며 나머지 사항들을 컴파일을 위한 옵션들로 필요에 따라 적거나 생략할 수 있습니다. 또한 모든 옵션은 적는 순서와 상관이 없이 똑같은 기능을 합니다. GCC의 옵션 -c 이 옵션을 사용하면 링크의 과정은 생략되고 컴파일만 수행합니다. 만약 이 옵션이 사용된다면 링크와 관련된 -l 또는 -L 옵션은 무시됩니다. -o outputfilename 컴파일한 결과를 저장하는 파일명을 직접 지정해 주는 옵션입니다. 이 옵션이 사용되지 않으면 기본적으로 a.out이라는..

반응형