반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- CUDA
- 티스토리챌린지
- 딥러닝
- Android
- linux
- pytorch
- 분당맛집
- 오블완
- ROS2
- string
- openAI
- timm
- 판교
- no space left on device
- 터미널
- GPT
- humble
- ros
- CLASS
- ChatGPT
- ubuntu
- error
- socketio
- tensorflow
- opencv
- 맛집
- 스팸
- python
- TTS
- Torch
Archives
- Today
- Total
RoBoLoG
[ROS2] OSError: [Errno 8] Exec format error 본문
[오류]
ROS2에서 launch 파일을 실행했는데, 다음과 같은 Exec format error가 발생하였습니다.
[INFO] [launch]: Default logging verbosity is set to INFO
[ERROR] [publisher_node.py-1]: exception occurred while executing process:
Traceback (most recent call last):
File "/opt/ros/foxy/lib/python3.8/site-packages/launch/actions/execute_process.py", line 723, in __execute_process
transport, self._subprocess_protocol = await async_execute_process(
File "/opt/ros/foxy/lib/python3.8/site-packages/osrf_pycommon/process_utils/async_execute_process_asyncio/impl.py", line 142, in async_execute_process
transport, protocol = yield from _async_execute_process_nopty(
File "/opt/ros/foxy/lib/python3.8/site-packages/osrf_pycommon/process_utils/async_execute_process_asyncio/impl.py", line 46, in _async_execute_process_nopty
transport, protocol = yield from loop.subprocess_exec(
File "/usr/lib/python3.8/asyncio/base_events.py", line 1630, in subprocess_exec
transport = await self._make_subprocess_transport(
File "/usr/lib/python3.8/asyncio/unix_events.py", line 197, in _make_subprocess_transport
transp = _UnixSubprocessTransport(self, protocol, args, shell,
File "/usr/lib/python3.8/asyncio/base_subprocess.py", line 36, in __init__
self._start(args=args, shell=shell, stdin=stdin, stdout=stdout,
File "/usr/lib/python3.8/asyncio/unix_events.py", line 789, in _start
self._proc = subprocess.Popen(
File "/usr/lib/python3.8/subprocess.py", line 858, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "/usr/lib/python3.8/subprocess.py", line 1594, in _execute_child
self._posix_spawn(args, executable, env, restore_signals,
File "/usr/lib/python3.8/subprocess.py", line 1545, in _posix_spawn
self.pid = os.posix_spawn(executable, args, env, **kwargs)
OSError: [Errno 8] Exec format error: '/home/wow/new_ws/install/publisher/lib/publisher/publisher_node.py'
[주요 원인 및 해결 방법]
이 오류는 **Exec format error**로, Python 스크립트나 실행 파일이 실행 불가능한 포맷으로 처리되고 있다는 것을 의미합니다. 보통 다음과 같은 원인으로 발생할 수 있습니다
1. Python 스크립트의 해더 누락 (#!/usr/bin/env python3)
- Python 스크립트를 실행 가능한 파일로 만들기 위해서는 스크립트의 첫 번째 줄에 **쉐뱅(shebang)**이 필요합니다. 이 쉐뱅은 시스템에 Python 인터프리터가 어디에 위치해 있는지 알려줍니다.
- 쉐뱅이 없으면 스크립트를 실행할 때 **Exec format error**가 발생할 수 있습니다.
- 해결 방법: Python 스크립트의 첫 번째 줄에 다음과 같은 쉐뱅을 추가하세요.
#!/usr/bin/env python3
2. 실행 권한 문제
- Python 스크립트가 실행 권한이 없을 경우에도 이 오류가 발생할 수 있습니다. publisher_node.py 파일이 실행 가능한 권한을 가지고 있는지 확인해야 합니다.
- 해결 방법: 스크립트에 실행 권한을 부여하세요.
chmod +x /home/wow/new_ws/install/publisher/lib/publisher/publisher_node.py
3. 잘못된 인터프리터 경로
- 만약 Python 스크립트에서 잘못된 인터프리터 경로를 사용하는 경우에도 이 오류가 발생할 수 있습니다. 예를 들어, Python 2와 Python 3이 섞여 있거나, 경로가 잘못 지정된 경우입니다.
- 해결 방법: 스크립트의 첫 줄에 적절한 Python 인터프리터 경로가 있는지 확인합니다.
- 올바른 Python 인터프리터 경로는 보통 다음과 같습니다: #!/usr/bin/env python3
4. 잘못된 바이너리 실행 파일
- Exec format error는 Python 스크립트가 아닌 경우에도 발생할 수 있습니다. 예를 들어, 다른 플랫폼에서 빌드된 실행 파일을 실행하려고 할 때 이 오류가 발생할 수 있습니다. 특히 ARM용 바이너리를 x86 플랫폼에서 실행하려는 경우 등입니다.
- 해결 방법: Python 스크립트나 실행 파일이 올바른 아키텍처에서 빌드되었는지 확인하세요. 이 경우 Python 스크립트가 아닌 컴파일된 바이너리 파일에서 발생하는 문제일 수 있습니다.
해결 방법 요약:
- 쉐뱅 추가: publisher_node.py 파일의 첫 번째 줄에 쉐뱅(#!/usr/bin/env python3)을 추가합니다.
- 실행 권한 추가: 파일에 실행 권한을 부여합니다 (chmod +x).
- Python 인터프리터 경로 확인: 쉐뱅이 Python 3 인터프리터를 가리키는지 확인합니다.
728x90
반응형
'Error Solution > ROS' 카테고리의 다른 글
ROS CMake 오류: error: option --install-layout not recognized (0) | 2024.02.19 |
---|