전체 글
-
cmake프로그래밍 언어/Cmake 2023. 4. 5. 11:10
cmake 빌드 프로그램X --> 빌드 파일을 생성하는 프로그램 (build system generator) cmake의 target은 무엇을 의미?? --> 실행 파일 혹은 라이브러리와 같이 프로그램을 구성하는 요소 build로 생기는 파일들 Makefile - make 명령어가 수행할 수 있는 명령어 CMakeFiles - OS 정보, 컴파일러 정보 등등을 기록한 임시 파일들 선택한 generator에 따라 프로젝트의 특정 파일 정보 저장 cmake_install.cmake: install 타임에 실행할 install 규칙을 다룬 cmake script CMakeCache.txt: CMake가 config를 그대로 재시작할 때 사용됨 Binary Target executable library Pseu..
-
library 만들기프로그래밍 언어/C++ 2023. 3. 30. 21:49
library - header only - 헤더에 정의 - static library - .a (linux), .lib (window) 라이브러리 - dynamic library - 로드 타임 - 런타임 -fPIC (Position Independent Code) GOT (Global Offset Table) PLT (Prosedure Linkage Table) static과 externstatic은 내부에서만 링크를 사용extern은 외부에 링크 허용nm 명령어 - name manglingc++ 에서 mangling 사용, c에서 사용하기 위해서는 mangling 없애줘야함
-
build 옵션프로그래밍 언어/C++ 2023. 3. 30. 21:43
static_assert(조건, 설명)memory leak tool g++ 컴파일 옵션 -o : output의 이름 설정 -Wall : warning을 모두 보여줌 - Werror : warning을 error로 간주 -std={} : {}에 들어가는 c++ 버전으로 빌드 - g : 컴파일의 세부 정보 출력 -O0 : 최적화 숫자 (optimazation level) -march={} : machine archtecture -c : object 파일 생성 -S: 어셈블리 생성
-
-
#! /bin/bashLinux/ubuntu 2020. 6. 26. 10:43
쉘 스크립트를 작성하다가 #! /bin/bash를 처음에 넣지 않았더니 오류가 발생했다! 주석이 아니었나? 무슨 기능을 하는지 알아보자 "#!"은 스크립트를 실행할 쉘 선언문 우분투에서는 /bin/bash 와 /bin/sh 를 쓴다. (bash --> dash) bash는 예전부터 사용해오던 쉘 - 더 풍부한 기능 제공 but 수행시간 느릴 수 있음 dash는 비교적 최근에(우분투 15)에 사용하기 시작한 쉘 - 더 빠른 수행시간 but 기능이 없을 수 있음
-
Makefile프로그래밍 언어/Cmake 2020. 5. 25. 11:50
gcc -c 를 이용한 object 파일 생성gcc -o 를 이용해 바이너리 파일 생성 gcc를 이용해 스크립트 파일을 생성해도 된다 compile.sh >>#! /bin/bashgcc -c hello.cgcc -c main.cgcc -o hello hello.o main.o 이러한 스크립트의 문제점이 무엇일까?프로젝트의 크기가 커진다면 컴파일할 파일도 많아질 것이다. 하지만 위 스크립트는 모든 파일을 다 컴파일해야 된다--> 파일에 소스가 바뀌었는지를 계속 체크해야하고 바뀐 목적 파일만 새로 컴파일하는 기능이 추가되어야 한다!!! Makefile >>.PHONY: all clean all : hello hello.o : hello.c gcc -c hello.c main...
-
GCC프로그래밍 언어/Cmake 2020. 5. 12. 20:44
gcc 컴파일러엄밀히 말하면 gcc는 컴파일러가 아님전처리기와 C컴파일러, 어셈블러, 링커를 각각 호출해주는 역할을 담당하는 컴파일러 드라이버(compiler driver) 전처리기 cpp0/ccl -EC 컴파일러 cc1어셈블러 as링커 collect2 --> ld C 컴파일러 위치 /usr/libexec/gcc/i386-redhat-linux/4.12/cc1(/usr/lib/gcc/i486-linux-gnu/4.12/cc1) C 컴파일러 위치 /usr/libexec/gcc/i386-redhat-linux/4.12cc1 : C 컴파일러, -E 옵션을 붙이면 C 전처리기로 동작cc1plus : C++ 컴파일러, -E 옵션을 붙이면 C++ 전처리기로 동작collect2 : 링커 (내부에서 링커인 ld를 호출..