갑작스러운 32bit 64bit system 변경

somedayhow의 이미지


분명 어제까지만 해도 잘 실행되던 프로그램이

binary file error가 나면서 실행이 되지를 않습니다.

-SG31:~/rnn_class_EE837/src/rnn-learn$ ./rnn-learn -c config.txt target*.txt
bash: ./rnn-learn: cannot execute binary file

인터넷 검색을 해보니 file filename 으로 컴파일한 환경을 확인해보라고 해서 확인해보니

SG31:~/rnn_class_EE837/src/rnn-learn$ file rnn-learn
rnn-learn: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.9, not stripped
SG31:~/rnn_class_EE837/src/rnn-learn$ rm config.txt target*.txt
SG31:~/rnn_class_EE837/src/rnn-learn$ ls

따로 무슨짓을 하지 않았는데 갑자기 왜 이렇게 된것일까요?

어떻게 실행시킬 방법이 없을까요?

chmod +x 써보라는 사람도 있었지만 소용이 없습니다.

지금 쓰는 환경은 ubuntu 12.04 32bit입니다.

익명 사용자의 이미지

binary를 바꿨다... 라고 밖에 설명이 안되는 상황이군요.

somedayhow의 이미지

비번도 걸려있는 컴에 누가 그런일이 일어났다는게 참 신기합니다 ㅎㅎ

그래도 make clean 후 다시 make하니 돌아가서 정말 다행입니다

----------------------------------------------------------------------------------------------------------------------
많이 배워갑니다
고맙습니다.
언젠가 질문이 아니라 답변을 달아줄 수 있는 날이 오기를

rymuff의 이미지

저도 같은 경험이 있는데
일부 프로그램 중 이유는 모르겠지만 64bit환경에서 컴파일한 파일을 32bit환경에서 실행하려고하면 에러가 발생하는 것 같습니다.

익명 사용자의 이미지

일부가 아니라 64비트로 컴파일하면 32비트에서 실행안되는게 당연한건데요????

rymuff의 이미지

글을 이해를 못하신것 같은데 64비트로 컴파일한게 아닌 64비트 환경에서 컴파일한 파일이라고 썼습니다.

qiiiiiiiip의 이미지

글을 이해를 못하신것 같은데 64비트 환경에서 컴파일하면 디폴트로 64비트로 컴파일됩니다.

rymuff의 이미지

글을 조금은 이해를 하신거 같은데
그래서 제가 일부라고 쓴겁니다.
64비트 환경에서 디폴트로 컴파일한 프로그램은 32비트에서 실행 불가능하고
64비트 환경에서 32비트로 컴파일한 프로그램은 32비트에서 실행 가능하겠죠

qiiiiiiiip의 이미지

저도 같은 경험이 있는데
일부 프로그램 중 이유는 모르겠지만 64bit환경에서 컴파일한 파일을 32bit환경에서 실행하려고하면 에러가 발생하는 것 같습니다.

이 두줄에 심오한 의미가 있어서, 아직까지 조금밖에 이해를 못하고 있네요ㅠ.ㅠ
결국 "일부 프로그램" 이란 "64비트 환경에서 디폴트로 컴파일한 프로그램" 이라는 뜻이었던가요???
그럼 "이유는 모르겠지만" 이라는 말은 무슨 뜻인가요???
문맥상 "64비트환경에서 32비트용으로 컴파일한 파일 중 일부는 되고 일부는 이유없이 안된다" 라고 이해를 해야할 것 같은데,
이 댓글을 보니 그것도 아닌것 같고..

rymuff의 이미지

결국 "일부 프로그램" 이란 "64비트 환경에서 디폴트로 컴파일한 프로그램" 이라는 뜻이었던가요???

정확히는 '64비트 환경에서 컴파일한 파일' 입니다.
일부 툴들은 64비트 환경에서도 32비트-컴파일이 디폴트로 설정되어있습니다.

그럼 "이유는 모르겠지만" 이라는 말은 무슨 뜻인가요???

제 지식이 짧아 64비트 컴파일과 32비트의 컴파일 과정이 어떻게 다른지와
그리고 64비트 실행 프로그램과 32비트 실행 프로그램이 어떤 차이점을 가지고 왜 각각의 다른 실행 환경에서는 실행이 안되는지에 대한 이유를 모르겠다는 것 이였습니다.

문맥상 "64비트환경에서 32비트용으로 컴파일한 파일 중 일부는 되고 일부는 이유없이 안된다" 라고 이해를 해야할 것 같은데,

제가 전달하고자 했던 말은 문자 그대로
64비트 환경에서 컴파일한 일부 파일을 32비트 환경에서 실행하려고하면 (자세한 이유는 모르겠지만 위와같은) 에러가 발생하는 것 같습니다.
입니다.

제가 자세한 옵션을 모르는 이유는 저는 64비트 용 프로그램은 64비트 환경에서 컴파일하고
32비트 용 프로그램은 32비트 환경에서 컴파일하기때문입니다.;;

Necromancer의 이미지

64비트 환경에서 컴파일한게 중요한게 아니라 컴파일한 후 결과물이 이미 64비트이네요.
크로스컴파일 환경을 구축하면 32비트에서도 64비트 결과물 만들어냈 수 있고 그 반대도 되지만,
32비트 환경에서는 64비트 바이너리를 못 돌리죠.

잘돌던게 갑자기 저 에러 났다면 누군가가 손 댔다는 거 외에는 없겠네요.

Written By the Black Knight of Destruction

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.