저희 TeamCR@K 사무실 한 곳에서 조용하게 자리잡고 있는 식구 하나가 있습니다.
이름하야 Mac Pro...
한동안 너무 바빠 신경 써 주지 못했던 OS X에게 새로운 역할을 줘 보았습니다.
기존 레인보우 테이블에 해시를 생성하던 일을 OS X에서 해 보려고 하는데요.
해시 생성 코드는 리눅스 기반으로 만들고 테스트 했던지라 BSD 유틸 기반인 OS X에서도 잘 동작하리라 생각합니다.
OS X에서 포팅을 준비하면서 테스트코드 하나를 컴파일 해 봤습니다.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void)
{
char buf[1024];
bzero(buf, sizeof(buf));
strcpy(buf, "test!\n");
fprintf(stdout, "%s", buf);
return 0;
}
컴파일 시도 결과 다음과 같은 메세지를 출력하는군요.
보통 리눅스 시스템에서 사용하는 C컴파일러 명령으로는 gcc가 있는데 유닉스 환경과 호환성을 위해 cc 명령으로 심볼릭 링크를 생성해 놓습니다.
OS X 콘솔 터미널에서 컴파일 테스트를 하던 도중 무의식적으로 cc 명령을 사용했는데 gcc 명령과는 다른 Warning 구문을 출력해 주네요.
cc 명령을 사용한 결과에서 함수 원형이 선언되어 있지 않아 출력되는 경고 구문에 대해서는 일반 gcc 결과와 다를게 없었습니다.
그러나 잘 살펴보면 다음 두 가지에 변화가 있다는 것 을 알 수 있습니다.
1. 소스코드 내에서 함수 원형이 선언되어 있지 않은 함수에 대해 기본 시스템 헤더파일들 중 같은 이름으로 선언된 함수의 원형을 출력
2. note 태그를 사용하여 참조된 기본 시스템 헤더파일 정보를 출력
cc 명령의 결과 형태가 XCode IDE에 활용되는지는 아직 잘 모르겠습니다.
그러나 기본 gcc 경고구문보다는 진일보 된 경고구문이 아닐까 생각해봅니다.
cc 명령 결과 형태에 깜짝놀라 이야기가 잠시 딴 곳으로 샜습니다만..
여차저차해서 컴파일을 마무리 했습니다.
만들어져 있던 레인보우 테이블에서 일반 평문에 비해 해시 데이터가 많이 부족하기 때문에 지금 실행하는 프로그램에서 평문 데이터 저장을 잠시 미루도록 했습니다.
fork()를 사용하여 프로세스 별로 해시 데이터를 생성하도록 했는데 전체적으로 시스템에도 크게 지장을 주지 않는 범위내에서 실행되고 있는 것 같습니다.
오늘부터 OS X는 사무실 한 곳에서 묵묵히 그리고 쉼 없이.. 해시 데이터를 생성하게 되겠네요..