언어/C
-
make와 Makefile 사용하기언어/C 2020. 1. 21. 16:52
그동안 gcc -o main -g *.c -lm 명령어를 이용해 직접 컴파일을 하였다. 하지만 GNU에서는 주로 make를 이용해 컴파일을 한다.(kaldi 설치하면서 많이 느낌.) Makefile은 make로 어떤 프로그램 구조를 컴파일하기 위해 명령어들을 작성해 놓은 파일로 보면 된다. 그럼 시작해보자. 1. Makefile 만들기 vim Make file vim을 이용해 파일을 생성하고 그안에 아래의 코드를 작성하였다. 1 run_anc : main.o anc.o functional.o secondary_path.o synchronizer.o 2 gcc -o run_anc main.o anc.o functional.o secondary_path.o synchronizer.o 3 4 main.o : ..
-
gdb 사용해서 C 디버깅하기언어/C 2020. 1. 21. 16:17
C를 개발하는데 디버깅 안할 수는 없다. vim을 이용해 gcc로 C 개발을 시작했고, 드디어 디버깅이 필요한 시점이 왔다. 1. 디버깅 시작 gdb ./main 실행파일을 gdb로 연다. output: GNU gdb (Ubuntu 8.1-0ubuntu3.1) 8.1.0.20180409-git Copyright (C) 2018 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying"..
-
gdb에서 fopen 함수 디버깅시 step을 사용했을 때 에러언어/C 2020. 1. 21. 16:14
gdb를 이용해 step 명령어를 사용해 디버깅시 fopen에서 파일을 찾을 수 없다며 에러가 나는 것을 확인하였다. Breakpoint 1, main () at main.c:24 24 file_sp.err_sp = fopen("out/han/SP/error.csv", "wt"); // save error of estimating secondary path (gdb) s _IO_new_fopen (filename=0x555555556383 "out/han/SP/error.csv", mode=0x555555556380 "wt") at iofopen.c:88 88 iofopen.c: 그런 파일이나 디렉터리가 없습니다. 찾아보니 step과 next 명령어의 차이점에서 나타나는 문제였는데 영어로는 설명이 이렇다..
-
gcc 모듈 c 파일 이용해 컴파일하기언어/C 2020. 1. 13. 12:33
당연히 c 개발을 하면 c파일과 header파일로 파일을 분할해서 관리한다. 그래서 main.c와 모듈이 되는 c파일을 같이 컴파일하는 방법에 대해 알아보았다. 1. file 준비 현 나의 상황으로는 main.c anc.c, anc.h functional.c, functional.h secondary_path.c, secondary_path.h synchronizer.c, synchronizer.h common.h 로 프로젝트가 이루어져 있다. 모두 같은 디렉토리에 존재한다. header file들은 현재 디렉토리에 꼭 존재해야 한다. Visual studio에서는 common.h에서 stdlib.h 등 필수 헤더파일들을 include했지만 리눅스에서 gcc를 이용해 컴파일할 때는 common.h의 #i..
-
gcc 설치 및 사용법언어/C 2020. 1. 13. 12:31
리눅스에서 C언어 개발 환경을 구축하기 위해 gcc를 사용해본다. 1. 설치 보통 우분투를 설치하면 gcc는 설치되어있다. 아래의 명령어를 통해 설치여부를 확인해보자. gcc output: gcc: fatal error: no input files compilation terminated. 이렇게 나오면 설치되어 있는 것이다. 버젼을 확인해보자. gcc --version output: gcc (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0 Copyright (C) 2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not e..