반응형
    
    
    
  
                              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 | 
                            Tags
                            
                        
                          
                          - no space left on device
 - humble
 - 터미널
 - 티스토리챌린지
 - ChatGPT
 - Android
 - 스팸
 - 판교
 - tensorflow
 - TTS
 - ros
 - GPT
 - string
 - ROS2
 - CUDA
 - Torch
 - 맛집
 - socketio
 - 분당맛집
 - python
 - 오블완
 - opencv
 - CLASS
 - ubuntu
 - linux
 - pytorch
 - openAI
 - error
 - timm
 - 딥러닝
 
                            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 | 
|---|