나는 C 프로그램을 가지고 있고 그것을 나의 32 리눅스 민트에서 실행 가능하게 만들었습니다. 숙제 목적으로 대학 수영장 컴퓨터에서 작동하는지 테스트해야 합니다. 나는 솔직히 거기에 어떤 Linux 배포판이 설치되어 있는지 전혀 모릅니다. 실제로 그것을 보는 데 2분 정도 걸렸지만 그것이 32비트 시스템이라는 것도 알고 있습니다.
따라서 터미널()에서 실행하려고 하면 오류가 ./program
발생 bash permission denied
하고 이는 파일이 실행 가능하지 않다는 것을 알고 있으므로 chmod u+x program
명령을 다시 실행하여 실행 가능하게 만든 다음 작동하고 내 프로그램이 랩톱에서 실행됩니다.
그 이유가 무엇인지 아는 사람이 있습니까? 내 말은, 적어도 내 리눅스 민트에서는 내 파일이 실행 가능하다는 것입니다. 왜 다른 리눅스 배포판에서는 실행 가능하지 않습니까?
어쩌면 다른 방법으로 실행 가능하게 만들어야 할까요? 나는 앞서 언급한 사람만 알고 있습니다 chmod u+x program
.
고쳐 쓰다:
댓글에서 언급했듯이 대학 컴퓨터로 파일을 전송하는 방법은 Google 드라이브에서 다운로드하는 것입니다. 이제 랩톱에서 테스트하고 있지만 다른 시스템(UBUNTU)에서 다시 Google 드라이브에서 단일 파일을 다운로드하려고 시도하지만 문제는 동일합니다. 실행할 수 없습니다. 그런 다음 파일을 타르 처리했고(Richard가 제안한 대로) 압축을 푼 후 파일이 즉시 실행 가능했습니다. 따라서 파일을 타르 처리하면 다른 시스템에서도 실행 가능해야 한다는 결론에 이르게 됩니다. 이 경우에는 제 대학입니다. 컴퓨터.
답변1
이를 수행하지 않았기 때문에 chmod u+x
유닉스가 아닌 파일 시스템은 이 데이터를 저장하지 않으며 파일 외부에 있습니다. 실행 비트는 google-drive에 복사되지 않습니다. 그러니 다시 달려야 합니다 chmod
.
컴파일된 컴퓨터에서는 chmod
컴파일러가 이를 수행하므로 실행할 필요가 없습니다.
Unix 생태계 내에 보관하는 한 해당 x
부분은 그대로 유지됩니다. 그러나 google-drive는 Unix가 아닙니다(Unix에서 실행되지만). tar
모든 메타데이터와 함께 많은 수의 파일/디렉토리를 단일 파일로 래핑할 수 있는 프로그램입니다.