실행 파일이란? .exe와 .app 차이부터 실행 안 되는 이유까지
“AI가 프로그램을 만들었다고 하는데, 어떤 파일을 눌러야 실행되나요?”
AI 코딩 도구로 간단한 메모 프로그램을 만들었거나 인터넷에서 프로그램을 내려받았다고 가정해 보겠습니다. 파일 목록에 memo.exe가 있을 수도 있고, Mac에서는 Memo.app이라는 아이콘이 보일 수도 있습니다. 그런데 어떤 파일은 더블클릭하면 프로그램이 열리고, 어떤 파일은 열리지 않거나 오류가 나타납니다.
이 차이를 이해하는 핵심이 바로 실행 파일(Executable File)입니다.
실행 파일은 컴퓨터가 프로그램의 동작을 시작할 수 있도록 준비된 파일을 말합니다. 사람이 읽는 설명서나 사진처럼 내용을 보여 주기 위한 파일과 달리, 실행되면 컴퓨터가 정해진 작업을 수행하도록 합니다. 하지만 “실행 파일 = 무조건 .exe”는 아닙니다. 운영체제마다 프로그램을 배포하고 실행하는 방식이 다르기 때문입니다. 이번 글에서는 실행 파일의 뜻부터 Windows·Mac·Linux의 차이, 실행이 안 되는 이유, 모르는 파일을 안전하게 확인하는 법까지 알아보겠습니다.
이 글의 순서
- 1. 실행 파일은 '읽는 파일'이 아니라 '동작을 시작하는 파일'입니다
- 2. 코드를 작성한 뒤 실행 파일은 어떻게 만들어지나요?
- 3. Windows 실행 파일은 왜 .exe가 많을까요?
- 4. Mac에서는 .app이 실행 파일인가요?
- 5. Linux 실행 파일은 확장자가 없어도 되나요?
- 6. Windows·Mac·Linux의 실행 프로그램을 비교해 봅시다
- 7. 실행 파일이 있는데도 프로그램이 열리지 않는 이유
- 8. 모르는 실행 파일은 어떻게 안전하게 확인할까요?
- 9. AI가 만든 프로그램의 '실행 파일'을 받을 때 확인할 것
- 10. 실행 파일과 바이너리·설치 파일은 어떻게 다른가요?
- 자주 묻는 질문
- 결론: 실행 파일은 '프로그램을 시작하는 결과물'입니다
- 함께 읽으면 좋은 글
1. 실행 파일은 '읽는 파일'이 아니라 '동작을 시작하는 파일'입니다
일상적인 파일을 두 가지로 생각해 보세요. 문서 파일은 내용을 읽기 위한 것입니다. 예를 들어 장보기 목록을 적은 문서는 문서 프로그램이 열어 내용을 보여 줍니다. 실행 파일은 컴퓨터에 작업을 시키는 프로그램의 시작점 역할을 합니다. 예를 들어 계산기 프로그램을 실행하면 화면을 표시하고 사용자의 입력을 받아 계산합니다. 여기서 중요한 차이가 있습니다. 파일을 연다고 해서 모두 그 파일 자체가 실행되는 것은 아닙니다.
사진을 더블클릭했을 때 실제로 동작하는 것은 사진 파일이 아니라 사진을 보여 주는 앱입니다. 반대로 프로그램을 실행하면 그 프로그램은 파일을 읽고 쓰거나, 화면을 바꾸거나, 네트워크에 접속하는 등 다양한 작업을 할 수 있습니다. 실제 가능한 동작은 프로그램의 기능과 운영체제 권한에 따라 달라집니다. 쉽게 말해 실행 파일은 '이 데이터를 보여 주세요'가 아니라 '이 프로그램을 시작해 주세요'에 가까운 파일입니다.
2. 코드를 작성한 뒤 실행 파일은 어떻게 만들어지나요?
AI에게 “메모 프로그램을 만들어 줘”라고 요청하면 AI가 먼저 소스 코드를 작성할 수 있습니다. 소스 코드는 사람이 프로그램의 동작을 설명한 내용입니다. 그런데 소스 코드와 완성된 실행 프로그램은 같은 것이 아닙니다. 대표적인 컴파일형 프로그램을 아주 단순하게 표현하면 다음과 같습니다. 소스 코드 작성 → 빌드(컴파일·연결·패키징 등) → 실행 결과물 준비 → 운영체제에서 프로그램 시작 예를 들어 AI가 C#이나 C++로 메모 프로그램의 코드를 작성했다면, 대상 운영체제에 맞는 프로그램 결과물을 만드는 과정이 필요할 수 있습니다.
반면 Python이나 JavaScript처럼 인터프리터·런타임을 통해 코드를 실행하는 경우에는 별도의 네이티브 실행 파일 하나가 반드시 만들어지는 것은 아닙니다. 코드 파일과 실행 환경을 함께 사용하는 방식도 있습니다. 그래서 AI가 '코드 작성 완료'라고 답한 것과 '내 컴퓨터에서 실행 가능한 프로그램을 만들었다'는 것은 다릅니다. AI에게는 “어떤 운영체제에서, 어떤 파일을, 어떤 환경에서 실행해야 하는지”를 함께 확인해야 합니다.
3. Windows 실행 파일은 왜 .exe가 많을까요?
Windows에서 프로그램을 설치하거나 실행할 때 자주 보는 이름이 .exe입니다. 'executable'이라는 영어 단어에서 온 확장자입니다.
가상의 파일 이름으로 예를 들어 보겠습니다.
my-memo.exe — Windows용 메모 프로그램의 실행 파일일 수 있습니다.
setup.exe — 프로그램 자체가 아니라 설치를 시작하는 실행 파일일 수 있습니다.
둘 다 .exe지만 목적은 다릅니다. 하나는 앱을 사용하는 데 쓰이고, 다른 하나는 설치 과정을 진행하는 데 쓰일 수 있습니다.
Windows의 많은 실행 프로그램은 PE(Portable Executable)라는 파일 형식을 사용합니다. 이 형식에는 실행에 필요한 코드와 컴퓨터 종류 등에 관한 정보가 담길 수 있습니다.
여기서 주의할 점은 이름입니다. PE에 'Portable'이라는 단어가 들어 있다고 해서 Windows용 .exe를 Mac이나 Linux에서 그대로 실행할 수 있다는 뜻은 아닙니다.
또 .dll은 일반적으로 다른 프로그램이 불러서 사용하는 코드·기능 모듈이고, .msi는 Windows 설치 패키지입니다.
이런 파일들이 모두 .exe와 같은 방식으로 직접 실행되는 앱은 아닙니다.
기억할 점: Windows에서 .exe는 대표적인 실행 파일 확장자이지만, 확장자만으로 파일의 실제 내용이나 안전성을 확정할 수 없습니다.
4. Mac에서는 .app이 실행 파일인가요?
Mac을 사용하면 Memo.app처럼 보이는 프로그램을 만날 수 있습니다.
그런데 Mac의 .app은 보통 실행 파일 하나가 아니라 여러 파일을 묶은 '앱 번들'입니다.
겉으로는 하나의 앱 아이콘처럼 보이지만, 내부에는 실제 실행 코드와 앱 아이콘·이미지·설정 같은 자료가 들어갈 수 있습니다.
예를 들어 다음은 이해를 돕기 위한 가상의 앱 폴더 구조입니다.
Memo.app/
Contents/
Info.plist
MacOS/
Memo
Resources/
icon.png
여기서 MacOS/Memo는 앱을 시작하는 실제 실행 코드가 들어 있는 파일의 예시이고, Resources에는 화면이나 아이콘에 쓰이는 자료가 들어갈 수 있습니다.
이 구조를 알아두면 “Mac 앱을 다른 컴퓨터로 옮기려는데 내부 파일 하나만 복사하면 되나요?”라는 질문에 답하기 쉽습니다.
항상 그렇지는 않습니다. 앱에 필요한 다른 파일과 라이브러리, 설정이 함께 있어야 제대로 동작할 수 있기 때문입니다.
그리고 모든 Mac 프로그램이 .app 형태인 것도 아닙니다. 터미널에서 사용하는 명령줄 도구처럼 앱 번들 없이 실행되는 프로그램도 있습니다.
5. Linux 실행 파일은 확장자가 없어도 되나요?
네. Linux에서는 실행 프로그램의 파일 이름에 .exe 같은 확장자가 없을 수도 있습니다.
예를 들어 가상의 memo-tool이라는 파일이 Linux용 프로그램일 수 있습니다.
Linux에서 많이 쓰는 실행 바이너리 형식은 ELF입니다. 하지만 Linux의 모든 ELF 파일이 사용자가 직접 시작하는 앱인 것은 아닙니다. 공유 라이브러리 등 다른 용도로 쓰이는 ELF 파일도 있습니다.
또 Linux에서는 스크립트 파일이 적절한 해석기와 실행 권한을 갖춘 경우 프로그램처럼 실행될 수 있습니다.
여기서 중요한 조건이 있습니다. 실행 권한이 있다고 반드시 실행에 성공하는 것은 아닙니다. 파일 형식, 운영체제·CPU 호환성, 필요한 해석기·라이브러리, 저장 위치의 실행 정책 등이 맞아야 합니다. 더 중요한 점은 실행 권한이 안전을 보증하지도 않는다는 것입니다. 출처를 모르는 파일에 실행 권한을 주거나 직접 실행해서 정체를 알아보려 해서는 안 됩니다.
6. Windows·Mac·Linux의 실행 프로그램을 비교해 봅시다
대표적인 모습만 간단히 비교하면 다음과 같습니다.
| 운영체제 | 자주 보는 형태 | 알아둘 점 |
| Windows | `.exe` | 앱 자체일 수도, 설치 프로그램일 수도 있음 |
| macOS | `.app` | 실제 실행 코드와 리소스를 묶은 앱 번들 |
| Linux | 확장자 없는 파일, ELF 바이너리 등 | 실행 형식·권한·환경을 함께 확인 |
이 표는 모든 예외를 나열한 것이 아니라 초보자가 가장 흔히 만나는 모습을 정리한 것입니다.
핵심은 파일 이름보다 '어떤 운영체제와 환경을 대상으로 만든 프로그램인가'가 중요하다는 사실입니다.
예를 들어 Windows용 프로그램의 파일 이름을 .exe에서 .app으로 바꾼다고 Mac 앱이 되지는 않습니다. 확장자를 바꾸는 것은 이름을 바꾸는 일이지, 프로그램을 다른 운영체제용으로 변환하는 일이 아니기 때문입니다.
7. 실행 파일이 있는데도 프로그램이 열리지 않는 이유
“파일은 분명히 있는데 왜 실행이 안 되죠?”라는 질문에는 여러 가능한 답이 있습니다. 첫째, 운영체제가 다를 수 있습니다. Windows용으로 만든 프로그램을 Mac에서 직접 열려고 하거나 그 반대인 경우입니다. 둘째, CPU 종류가 맞지 않을 수 있습니다. 같은 운영체제라도 x64와 Arm64처럼 대상 컴퓨터의 구조가 다를 수 있습니다. 호환 기능이 있는지 여부는 프로그램과 운영체제에 따라 달라집니다. 셋째, 필요한 실행 환경이 없을 수 있습니다.
일부 프로그램은 특정 .NET 런타임이나 다른 라이브러리를 필요로 합니다. 실행 파일 하나만 복사했다고 모든 준비가 끝나는 것은 아닙니다. 넷째, 파일이 손상됐거나 일부 구성 요소가 빠졌을 수 있습니다. 다운로드가 완전히 끝나지 않았거나 앱 번들에서 일부 파일이 누락되면 실행에 실패할 수 있습니다. 다섯째, 운영체제의 보안 정책이나 권한 때문에 차단될 수 있습니다. 특히 출처를 확인할 수 없는 프로그램은 보안 기능이 경고하거나 실행을 막을 수 있습니다.
예를 들어 AI가 Windows용 앱을 만들어 줬는데 Mac에서 열리지 않는다면, 파일 이름을 바꾸거나 보안 경고를 끄기 전에 AI에게 처음부터 Mac용 빌드가 가능한 프로젝트인지 확인하는 편이 좋습니다.
8. 모르는 실행 파일은 어떻게 안전하게 확인할까요?
인터넷에서 내려받은 프로그램을 확인할 때 가장 피해야 할 행동은 '일단 실행해 보고 무슨 일이 생기는지 확인하자'는 접근입니다. 실행 파일은 파일을 변경하거나 정보를 전송하는 등 실제 동작을 수행할 수 있기 때문입니다. 처음 보는 파일이라면 다음을 확인하세요. 출처: 공식 제작사나 신뢰할 수 있는 배포처에서 받은 파일인가요? 링크를 보내 준 사람이 누구인지도 확인하세요. 용도: 앱을 실행하는 파일인지, 설치를 시작하는 파일인지, 어떤 운영체제를 대상으로 하는지 공식 안내가 있나요?
보안 경고: Windows의 SmartScreen이나 Mac의 Gatekeeper가 경고한다면 무작정 무시하거나 보호 기능을 끄지 마세요. 권한: 프로그램이 필요 이상으로 관리자 권한, 파일 전체 접근, 계정 비밀번호를 요구하지 않나요? 파일명: 확장자를 숨기는 설정 때문에 실제 파일 종류를 잘못 이해하고 있지는 않나요? 다만 파일명과 확장자를 확인하는 것만으로 안전이 입증되지는 않습니다.
제작사의 서명이나 앱 공증도 출처와 무결성을 확인하는 데 도움을 줄 수 있지만, 악성 동작이 전혀 없다는 절대적인 보증은 아닙니다.
파일이 의심스럽다면 실행하지 말고, 공식 배포처에서 다시 확인하거나 신뢰할 수 있는 보안 담당자에게 문의하세요.
9. AI가 만든 프로그램의 '실행 파일'을 받을 때 확인할 것
AI에게 앱 제작을 맡기면 “완료했습니다”라는 말보다 실제 전달된 결과물과 실행 조건이 중요합니다. 예를 들어 Windows용 간단한 가계부 앱을 요청했다고 가정해 보겠습니다. AI가 코드만 작성했다면, 아직 실행 파일이 없을 수도 있습니다. 실행 파일을 만들었더라도 필요한 라이브러리나 설정 파일이 함께 있어야 할 수 있습니다. 이럴 때는 다음과 같이 요청해 보세요.
Windows 11에서 사용할 개인용 가계부 앱을 만들고 싶어요. 제 컴퓨터가 x64인지 Arm64인지 확인해야 하는지도 알려 주세요. 코드를 작성한 것과 실제 실행 파일을 만든 것을 구분해서 보고해 주세요. 어떤 파일이 실행 파일인지, 함께 필요한 파일이 무엇인지, 필요한 런타임과 안전하게 확인할 사항을 설명해 주세요. 실제로 빌드하거나 실행하지 않았다면 '미실행'이라고 표시하고, 확인하지 않은 성공 결과는 만들지 마세요. 이런 요청은 AI가 코드 작성·빌드·실행 확인을 서로 다른 단계로 보고하도록 유도합니다. 만약 AI가 “테스트 통과”라고 답했다면 어떤 운영체제에서 어떤 버전의 파일을 실제로 실행했고 무엇을 관찰했는지도 물어보세요. 답변에 그런 근거가 없다면 테스트 완료로 단정해서는 안 됩니다.
10. 실행 파일과 바이너리·설치 파일은 어떻게 다른가요?
비슷하게 들리는 단어를 마지막으로 정리해 보겠습니다. 바이너리 파일은 특정 형식의 데이터를 담는 파일을 넓게 가리킬 수 있습니다. 사진이나 음악 파일도 바이너리일 수 있으므로, 바이너리 파일이 전부 실행 파일은 아닙니다. 설치 파일은 프로그램을 컴퓨터에 배치하고 설정하는 과정을 시작하는 데 쓰입니다. Windows의 설치용 .exe처럼 설치 프로그램 자체가 실행 파일인 경우도 있지만, 설치 패키지와 설치 후 사용하는 앱 본체는 구별해야 합니다.
스크립트 파일은 해석기나 실행 환경의 도움을 받아 동작하는 코드를 담을 수 있습니다. 따라서 '실행된다'는 사실만으로 모두 같은 네이티브 바이너리 형식이라고 생각하면 안 됩니다. 라이브러리 파일은 다른 프로그램이 필요할 때 기능을 불러 쓰는 데 사용되는 경우가 많습니다. 실행 가능한 코드가 들어 있어도 사용자가 더블클릭해 시작하는 앱과 역할이 다를 수 있습니다. 즉, 파일을 이해할 때는 무슨 데이터가 들어 있나, 어떻게 실행되나, 어떤 목적으로 쓰이나를 나눠 보는 것이 좋습니다.
자주 묻는 질문
Q1. .exe 파일은 바이러스인가요?
아닙니다. 정상적인 Windows 프로그램도 .exe를 사용합니다. 다만 악성 프로그램도 실행 파일 형태로 배포될 수 있으므로, 확장자만 보고 안전하거나 위험하다고 단정하지 마세요. 출처와 보안 경고를 함께 확인해야 합니다.
Q2. .exe 파일을 Mac에서 바로 실행할 수 있나요?
일반적인 Windows용 .exe는 macOS의 네이티브 앱이 아닙니다. 별도의 호환 기술이나 가상 환경이 필요한 경우가 있지만, 모든 프로그램이 호환되는 것은 아닙니다. 초보자는 먼저 해당 프로그램의 공식 Mac 버전이 있는지 확인하는 것이 좋습니다.
Q3. .app 파일은 압축파일인가요?
보통 macOS의 .app은 실행 코드와 리소스 등을 정해진 구조로 묶은 앱 번들입니다. Finder에서 하나의 앱처럼 보이지만 일반적인 ZIP 압축파일과는 다릅니다.
Q4. 실행 파일을 만들려면 반드시 코딩을 알아야 하나요?
AI 코딩 도구나 앱 제작 도구가 개발을 도울 수 있습니다. 하지만 코드를 생성한 것과 실행 가능한 결과물을 만든 것, 실제로 작동하는지 검증한 것은 별개입니다. 운영체제와 배포 조건을 확인해야 합니다.
Q5. 실행 파일이 열리지 않으면 보안 기능을 꺼야 하나요?
아닙니다. 보안 경고를 끄기 전에 공식 배포처, 프로그램 버전, 운영체제·CPU 지원, 필요한 실행 환경을 확인하세요. 경고가 계속된다면 실행을 보류하고 제작사 지원을 받는 편이 안전합니다.
Q6. 실행 파일 이름을 바꾸면 다른 운영체제에서도 쓸 수 있나요?
아닙니다.
.exe를.app으로 바꾸는 것은 파일 이름을 바꾸는 일일 뿐입니다. 내부 코드 형식이나 운영체제 의존성까지 바뀌지는 않습니다.결론: 실행 파일은 '프로그램을 시작하는 결과물'입니다
실행 파일은 컴퓨터에서 프로그램 동작을 시작하도록 준비된 파일입니다. Windows에서는 .exe를 흔히 보고, Mac에서는 실행 코드와 자료를 묶은 .app 번들을 자주 만나며, Linux에서는 확장자가 없는 실행 프로그램도 사용합니다. 하지만 파일이 있다는 사실, 이름이 그럴듯하다는 사실, AI가 완료했다고 말한 사실만으로 실제 실행이나 안전이 보장되지는 않습니다. AI로 프로그램을 만든다면 코드 작성, 실행 결과물 생성, 필요한 환경 준비, 실제 테스트를 나눠 확인해 보세요. 이 구분을 이해하면 프로그램이 왜 열리지 않는지 훨씬 정확하게 질문하고 해결할 수 있습니다.
함께 읽으면 좋은 글
- 코드란 무엇일까? HTML·CSS·JavaScript와 AI 코딩 쉽게 이해하기 — 프로그램을 만드는 코드와 실행 결과물의 차이를 알아봅니다.
- 소프트웨어 테스트란? AI가 만든 코드의 PASS·FAIL 쉽게 이해하기 — 실행 여부와 테스트 결과를 구분하는 방법을 살펴봅니다.