목록gcc (5)
준호씨의 블로그
지인의 페이스북에서 이런 글을 보았습니다. gcc에서 -o는 컴파일 결과물의 파일명입니다. $ gcc -o main.c main.c 의 의미는 main.c 를 컴파일해서 결과물을 main.c로 저장하라는 말입니다. 결국 소스코드를 덮어쓴다는 의미가 됩니다. 컴파일러가 이런 실수를 막아 줄지 아닐지 궁금하더군요. 직접 시험해 보았습니다. 일단 제 컴퓨터의 gcc는 이런 걸 딱히 막아 주지는 않네요. 이런 실수 하지 않도록 조심해야겠습니다 ㅠㅠ 제 컴퓨터 gcc의 버전 정보입니다. $ gcc --version Configured with: --prefix=/Library/Developer/CommandLineTools/usr --with-gxx-include-dir=/Library/Developer/Comm..
코딩 채널을 분리 했습니다. 채널명은 잉여코더. 첫화로는 2014년에 올렸던 내용 리메이크로 제작해 보았습니다. (2014년 글 https://junho85.pe.kr/93) hello.c 소스코드 예제 #include int main() { printf("hello june!\n"); printf("hello july!\n"); return 0; } 컴파일 커맨드는 $ gcc hello.c 실행파일이 a.out 으로 만들어 집니다. $ gcc hello.c -o hello 실행파일이 hello 로 만들어 집니다. $ make hello cc hello.c -o hello 가 실행 됩니다. cc 나 gcc 나 c compiler 입니다. OS 나 환경에 따라 같은거일수도 있고 조금 다를 수도 있으나 당장..
C 언어를 처음 할 때에는 변수 선언은 가장 위에만 했어야 했고, for loop index 변수는 밖에서 선언하고 사용 했어야 했다. 하지만 C 언어도 세월이 흘러 그러한 제약들이 사라진지 이미 오래 되었다. C 언어 표준들에 대해 간단히 메모 해 본다. C11 - 2011 https://en.wikipedia.org/wiki/C11_(C_standard_revision)) C99 - 1999 https://en.wikipedia.org/wiki/C99 gcc --std=c99 for loop 에 초기화 변수 선언 가능 for (int i=0; i
gcc 로 컴파일 할 때 a 라이브러리가 b 라이브러리를 필요로 한다면 -la -lb 이런식으로 라이브러리 옵션을 적어 주어야 한다. a 라이브러리에서 b 라이브러이의 func_b 함수를 호출하는데 -lb 가 없거나 -lb 가 -la 앞에 있다면 a 라이브러리에서 b 라이브러이의 func_b 함수를 찾지 못하게 된다. 그런 경우 빌드 할 때 다음과 같이 undefined reference 오류가 발생하게 된다. a.c:111: undefined reference to `func_b' 공통적으로 참조 하는 라이브러리들은 가급적 뒤쪽에 배치 해 두는 것이 속편하다.
오랜만에 arm-linux-gcc를 써볼일이 생겨서 한번 써봤네요. 여러가지 방법이 있지만 좀 옛버전을 이용해서 손쉽게 세팅해 보았습니다. FALINUX에서 사용하기 좋게 만들어둔 패키지가 있더군요. 페도라 코어 2, 코어 3 ARM GCC 3.4.3 크로스 컴파일러 2006.12.09 http://forum.falinux.com/zbxe/?mid=warehouse&category=407522&document_srl=405714 에서 다운 받을 수 있었습니다. 페도라 코어라고 적혀 있긴 하지만 저는 Ubuntu 10 에서 작업했습니다. 다운로드 $ wget http://forum.falinux.com/_bankimages/_data_toolchain/arm-toolchain-3.4.3.tar.gz 다운로..