2024/03 35

[gcc] GCC 설치 완료와 오픈소스 권리와 책임 관계

GCC 설치 완료와 오픈소스 권리와 책임 관계 설치가 끝났습니다. 설치 디렉터리를 확인합니다. /opt/gcc-custom 디렉터리에 GCC를 성공적으로 빌드하고 설치하였으며, 이를 시스템의 PATH에 추가하여 기본 컴파일러로 사용할 수 있게 설정했음을 알 수 있습니다. c++: C++ 컴파일러입니다. cpp: C 전처리기입니다. gcc: C 컴파일러입니다. gcov: 코드 커버리지 분석 도구입니다. g++: GCC의 C++ 컴파일러 프런트엔드입니다. gcc-ar, gcc-nm, gcc-ranlib: GCC를 사용한 아카이브 관리 도구입니다. 마지막으로 gcc --version 명령을 실행했을 때, 설치된 GCC의 버전 정보가 표시됩니다. 이 버전은 "14.0.1 20240326 (experimental..

[gcc] GCC (GNU Compiler Collection) 소스 코드를 직접 빌드하는 과정

GCC (GNU Compiler Collection) 소스 코드를 직접 빌드하는 과정 GCC (GNU Compiler Collection) 소스 코드를 직접 빌드하는 과정은 복잡할 수 있지만, 시스템에 최적화된 컴파일러를 얻을 수 있다는 이점이 있습니다. 여기서는 GCC 소스 코드를 빌드하는 기본적인 단계를 설명합니다. 이 과정을 시작하기 전에, 필요한 모든 의존성이 설치되어 있어야 합니다. 의존성은 GCC 버전과 사용하는 시스템에 따라 다를 수 있습니다. 1. 필요한 의존성 설치 GCC를 빌드하기 전에, 빌드 과정에서 필요한 여러 도구와 라이브러리를 설치해야 합니다. 대표적으로 gcc, g++, make, libgmp-dev, libmpfr-dev, libmpc-dev 등이 있습니다. Debian 기반..

[gcc] GCC (GNU Compiler Collection)를 소스 코드에서 직접 빌드해야 하는 이유

GCC (GNU Compiler Collection)를 소스 코드에서 직접 빌드해야 하는 이유 GCC (GNU Compiler Collection)를 소스 코드에서 직접 빌드해야 하는 경우는 여러 가지가 있습니다. 이러한 상황은 개발자의 특정 요구 사항, 시스템 환경, 성능 최적화 목표, 또는 새로운 기능의 필요성에 의해 결정될 수 있습니다. 다음은 소스에서 GCC를 빌드해야 하는 주요 이유들입니다. 1. 최신 기능 사용 공식 리포지토리나 패키지 매니저를 통해 설치할 수 있는 GCC 버전은 안정성을 위해 일반적으로 최신 버전보다 조금 뒤처져 있을 수 있습니다. 소스 코드에서 직접 최신 버전을 빌드함으로써, 최신 언어 기능, 컴파일러 최적화, 버그 수정 등을 바로 활용할 수 있습니다. 2. 특정 시스템에 ..

[gcc] GCC (GNU Compiler Collection)의 고급 옵션

GCC (GNU Compiler Collection)의 고급 옵션 GCC (GNU Compiler Collection)는 다양한 고급 옵션을 제공하여, 개발자가 소프트웨어의 성능을 최적화하고, 코드의 휴대성과 호환성을 개선하며, 디버깅과 문제 해결 과정을 용이하게 할 수 있게 합니다. 이러한 고급 옵션을 효과적으로 사용하려면 각 옵션의 목적과 영향을 이해하는 것이 중요합니다. 다음은 GCC의 몇 가지 주요 고급 옵션과 그 사용법에 대한 설명입니다. 최적화 옵션 -O0: 최적화를 수행하지 않습니다. 이 옵션은 컴파일 시간을 최소화하고 디버깅을 최대화할 때 유용합니다. -O1 (또는 -O): 코드 크기와 실행 시간을 적당히 최적화합니다. 디버깅에도 적당히 용이합니다. -O2: -O1보다 더 많은 최적화를 수..

[gcc] 다양한 프로그래밍 언어의 소스 코드를 컴파일, GCC (GNU Compiler Collection)

다양한 프로그래밍 언어의 소스 코드를 컴파일, GCC (GNU Compiler Collection) GCC (GNU Compiler Collection)는 다양한 프로그래밍 언어의 소스 코드를 컴파일하는 데 사용되는 자유롭고 오픈 소스 컴파일러 모음입니다. 주로 C, C++, Objective-C, Fortran, Ada, Go 및 D 언어를 지원합니다. GCC는 GNU 프로젝트의 일부로 개발되었으며, Linux를 포함한 다양한 운영 체제에서 기본 컴파일러로 광범위하게 사용됩니다. 기본 사용법 GCC를 사용하여 C 언어 프로그램을 컴파일하는 기본 명령어는 다음과 같습니다. gcc source.c -o output 여기서 source.c는 소스 파일의 이름이고, output은 생성될 실행 파일의 이름입니다..

[리눅스 팁] 변수 값의 출처는 어디?

리눅스 기반 시스템에서 변수의 값은 여러 출처 리눅스 및 유닉스 기반 시스템에서 변수의 값은 여러 출처에서 설정될 수 있으며, 이는 환경 변수와 셸 변수를 포함하여 광범위한 범위에 걸쳐 있습니다. 변수 값의 주요 출처는 다음과 같습니다. 1. 시스템 환경 설정 시스템 시작 시: 시스템이 부팅될 때, /etc/profile, /etc/environment 같은 글로벌 설정 파일들에서 초기 환경 변수가 설정됩니다. 이러한 파일들은 시스템 전체에 걸쳐 적용되며, 모든 사용자와 프로세스에 기본적인 환경 설정을 제공합니다. 2. 사용자 프로필 설정 사용자 로그인 시: 사용자가 로그인하면, 사용자의 홈 디렉터리(디렉토리) 내의 설정 파일들(.bash_profile, .bashrc, .profile 등)이 실행되어 ..

[리눅스 팁] 환경 변수를 출력해주는 printenv 명령어

printenv 명령어 printenv 명령어는 리눅스 및 유닉스 기반 시스템에서 환경 변수들을 출력하는 데 사용됩니다. 환경 변수는 운영 체제의 작업 환경에 관한 정보를 저장하는 문자열로, 주로 시스템 설정이나 프로그램 설정을 관리하는 데 사용됩니다. printenv는 사용자의 현재 셸 환경에 설정된 환경 변수와 그 값을 보여주며, 시스템 구성이나 디버깅 정보를 확인하는 데 유용합니다. 사용법 기본적으로 printenv 명령어를 인자 없이 실행하면 시스템에 설정된 모든 환경 변수와 그 값들을 출력합니다. 특정 환경 변수의 값을 확인하고 싶은 경우에는 변수명을 인자로 전달할 수 있습니다. 모든 환경 변수와 값 출력 printenv 특정 환경 변수의 값 출력 printenv HOME 이 명령어는 사용자의 ..

[리눅스 팁] 표현식의 평가와 패턴의 확장

표현식의 평가와 패턴의 확장 리눅스 셸에서 "표현식의 평가(Expression Evaluation)"와 "패턴의 확장(Pattern Expansion)"은 스크립트나 명령어를 처리할 때 핵심적인 작업입니다. 이 두 과정은 셸이 명령어를 정확하게 해석하고 실행하기 위해 수행하는 중요한 단계입니다. 표현식의 평가 (Expression Evaluation) 표현식의 평가는 셸이 또는 스크립트가 수학적, 논리적, 또는 다른 형태의 표현식을 해석하고 그 결과를 도출하는 과정입니다. 이는 변수의 값을 계산하거나, 조건문의 참/거짓을 판단하며, 산술 연산을 수행하는 등 다양한 형태로 나타납니다. 산술 표현식: (( expression )) 구문을 사용하여 수행됩니다. 예를 들어, ((sum = 3 + 2))는 sum..

[리눅스 팁] 파일 패턴 매칭에 대하여

파일 패턴 매칭 파일명 패턴 매칭은 리눅스 및 유닉스 셸에서 파일과 디렉터리(디렉토리)를 선택할 때 사용되는 기법입니다. 이는 특정 규칙이나 패턴에 따라 파일명을 일치시키기 위해 사용되며, 주로 파일을 검색하거나 명령어에 파일명을 인자로 전달할 때 활용됩니다. 셸은 이러한 패턴 매칭을 통해 사용자가 복잡한 파일명을 일일이 지정하지 않고도, 특정 조건에 맞는 파일이나 디렉터리 그룹을 손쉽게 선택할 수 있게 해 줍니다. 주요 패턴 매칭 기호 * (Asterisk): 0개 이상의 문자와 일치합니다. 예를 들어, *.txt는 확장자가 .txt인 모든 파일과 일치합니다. ? (Question Mark): 정확히 한 개의 문자와 일치합니다. 예를 들어, ?.txt는 한 개의 문자 다음에 .txt가 오는 파일명과 일..

[리눅스 팁] 한꺼번에 테스트 파일 100개 만들기

한꺼번에 생성하는 테스트 파일들 001.txt부터 100.txt까지 총 100개의 파일을 한꺼번에 생성하기 위해 리눅스 셸에서는 루프(loop)를 사용하는 스크립트나 한 줄의 명령어를 활용할 수 있습니다. 여기서는 bash 셸을 사용하는 예시를 소개합니다. for 루프를 사용하는 방법 for 루프를 사용하여 지정된 범위의 숫자에 대해 반복하면서 각 숫자를 파일명에 포함시켜 파일을 생성할 수 있습니다. 다음은 그 예시입니다: for i in $(seq -w 1 100); do touch "00$i.txt" done 여기서 seq -w 1 100 명령어는 1부터 100까지의 숫자를 생성하며, -w 옵션은 모든 숫자를 같은 너비로 포맷팅 하여 앞에 0을 붙입니다. 예를 들어, 1은 001로, 10은 010로 ..