안녕하세요, TASTEDEV입니다.
브라우저에서 원격 컴퓨터의 화면을 보고 조작할 수 있는 TASTEREMOTE를 소개합니다. 접속받을 PC에 호스트 앱을 설치하고, 접속하는 쪽에서는 별도의 뷰어 앱 없이 웹 브라우저를 이용합니다. TASTEDEV 운영 서버를 이용하거나 직접 서버를 운영하는 구성을 선택할 수 있습니다.
현재 TASTEREMOTE는 기능과 안정성을 계속 다듬고 있는 개발 중인 프로젝트입니다. 사용 환경에 따라 버그가 발생하거나 일부 기능이 미흡하게 느껴질 수 있습니다. 운영체제별 지원 조건과 알려진 제한 사항을 확인한 뒤 사용해 주세요.
사용 중 불편한 점이나 오류를 발견하셨다면 제품 페이지의 의견과 질문에 남겨 주세요. 사용한 운영체제와 TASTEREMOTE 버전, 문제가 발생한 상황을 함께 알려 주시면 원인을 확인하고 개선하는 데 도움이 됩니다.
제품 및 다운로드: https://tastedev.net/products/remote
사용 설명서: https://tastedev.net/docs/remote
처음 연결하는 방법과 개발 과정은 아래 ‘자세히 보기’의 개발 로그에서 확인하실 수 있습니다.
아직 부족한 부분이 있지만, 보내 주시는 의견을 바탕으로 하나씩 개선해 나가겠습니다. TASTEREMOTE에 관심을 갖고 사용해 주시는 모든 분께 진심으로 감사드립니다.
TASTEDEV 드림
C는 범용 절차적 프로그래밍 언어로, 벨 연구소의 데니스 리치가 유닉스 운영체제를 작성하기 위해 설계했습니다. 이후 ANSI와 ISO에서 표준화되었고, 지금은 ISO/IEC JTC1/SC22/WG14 위원회가 표준을 관리하며 C99, C11, C17 같은 개정판이 널리 쓰입니다. 키워드가 적고 함수, 구조체, 포인터 같은 단순한 구성 요소로 이루어져 있으며, 컴파일러가 소스 코드를 곧바로 기계어로 번역합니다.
C는 운영체제 커널, 장치 드라이버, 마이크로컨트롤러 펌웨어, 언어 런타임, 데이터베이스처럼 예측 가능한 성능과 작은 실행 파일, 메모리에 대한 직접 제어가 필요한 곳에서 강점을 보입니다. 거의 모든 플랫폼에 C 컴파일러가 있고, C의 호출 규약(ABI)은 여러 언어가 서로의 라이브러리를 부를 때 쓰는 공통 접점입니다. 다만 배열 경계 검사나 자동 메모리 관리가 없어 버퍼 오버플로나 해제된 메모리 사용 같은 오류는 프로그래머가 직접 막아야 합니다.
처음 배운다면 GCC, Clang, MSVC 중 하나를 설치하고 터미널에서 작은 프로그램을 직접 컴파일해 보는 것으로 시작합니다. 변수와 자료형, 제어문, 함수, 배열과 문자열, 포인터, 구조체, 동적 메모리 순서로 익히는 것이 일반적입니다. 컴파일할 때 -Wall -Wextra로 경고를 켜 두고, cppreference에서 표준 라이브러리를 찾아보며, AddressSanitizer와 GDB로 메모리 오류를 추적하는 습관을 들이면 도움이 됩니다.
특징
하드웨어에 가까운 제어
포인터로 메모리 주소를 직접 다루고 malloc과 free로 메모리를 직접 관리할 수 있어, 자료 배치와 자원 사용을 세밀하게 통제할 수 있습니다.
작고 이식성 높은 언어
언어 자체가 작고 ISO 표준으로 정의되어 있어, 표준을 따르는 코드는 다양한 운영체제와 프로세서에서 다시 컴파일해 쓸 수 있습니다.
가벼운 런타임과 빠른 실행
네이티브 기계어로 컴파일되고 런타임이 거의 필요 없어, 운영체제 없이 동작하는 펌웨어나 부트로더에도 쓸 수 있습니다.
다른 언어와의 공통 접점
C 함수 인터페이스는 사실상 표준 ABI로 쓰여, Python, Rust, Go 같은 언어가 FFI로 C 라이브러리를 직접 호출할 수 있습니다.
이런 곳에 씁니다
운영체제 커널과 장치 드라이버
임베디드 펌웨어와 마이크로컨트롤러
언어 런타임, 인터프리터, 데이터베이스
성능이 중요한 시스템 라이브러리
설치하기
1
컴파일러 설치
Debian·Ubuntu 계열 Linux에서는 아래 명령으로 GCC와 Make를 설치합니다(Fedora는 sudo dnf install gcc make). macOS에서는 xcode-select --install로 Xcode 명령줄 도구를 설치하면 Clang을 쓸 수 있습니다. Windows에서는 MSYS2를 설치한 뒤 UCRT64 셸에서 pacman -S mingw-w64-ucrt-x86_64-gcc를 실행하거나, Visual Studio Build Tools의 'C++를 사용한 데스크톱 개발' 워크로드를 설치합니다.
sudo apt install build-essential
2
설치 확인
새 터미널을 열고 컴파일러 버전이 표시되는지 확인합니다. macOS에서는 gcc 명령이 Apple Clang으로 연결되어 있어 Clang 버전이 표시됩니다. MSVC를 설치했다면 Developer Command Prompt에서 cl을 실행해 확인합니다.
gcc --version
3
첫 프로그램 컴파일하고 실행
첫 프로그램을 hello.c로 저장한 뒤, 경고를 켜고 C17 표준으로 컴파일해 실행합니다. MSVC에서는 cl /W4 hello.c로 컴파일하고 hello.exe를 실행합니다.
#include <stdio.h>는 printf 함수가 선언된 표준 입출력 헤더를 불러옵니다. main 함수는 프로그램이 시작되는 지점이며, (void)는 인수를 받지 않는다는 뜻입니다. printf는 문자열을 출력하고 \n은 줄바꿈입니다. return 0은 운영체제에 정상 종료를 알립니다. gcc가 소스를 실행 파일 hello로 컴파일하고, ./hello로 실행합니다.
hello.c
#include <stdio.h>
int main(void) {
printf("Hello, world!\n");
return 0;
}
gcc hello.c -o hello && ./hello
자주 쓰는 도구
GCC
GNU 컴파일러 모음으로, 대부분의 Linux 배포판에서 기본 C 컴파일러로 쓰이며 다양한 프로세서 아키텍처를 지원합니다.
Clang
LLVM 기반 컴파일러로, 읽기 쉬운 오류 메시지와 AddressSanitizer 같은 검사 도구를 제공하며 macOS의 기본 컴파일러입니다.
Make
Makefile에 적은 규칙에 따라 빌드를 자동화하고, 바뀐 파일만 다시 컴파일합니다.
GDB
GNU 디버거로, 중단점을 걸고 한 줄씩 실행하며 변수와 메모리를 살펴볼 수 있습니다. -g 옵션으로 컴파일하면 소스 단위로 디버깅할 수 있습니다.
댓글 0개
로그인 · 로그인하면 댓글을 남길 수 있습니다.