2011-08-09 5 views
3

표준 라이브러리 함수 만 사용하는 암호화 계산을하는 매우 간단한 C 프로그램이 있습니다.Ubuntu에서 OS X에서 C 프로그램을 컴파일하기

우분투 (10.04, 32 비트)에서 프로그램을 실행하고 -m32 플래그와 함께 cc를 사용하여 OS X 10.6에서 컴파일합니다. 우분투에서 실행하려고 할 때 "이진 파일을 실행할 수 없습니다."라는 오류 메시지가 나타납니다.

우분투에서 컴파일하면 제대로 실행됩니다.

OS X에서 우분투에서 실행될 바이너리로 코드를 컴파일하는 쉬운 방법이 있습니까? 그렇지 않다면 바이너리가 호환되지 않는 이유는 무엇입니까?

+0

부분 복제 : http://stackoverflow.com/questions/5245444/cross-compiler-for-linux-on-mac-os-x이 링크는 ['crosstool-NG'] (http : // crosstool -ng.org). – darvids0n

답변

1

gcc의 최소한의 이식성을 부여 할 수 없습니까?

물론 크로스 컴파일러 like this을 만들 수 있지만 우분투 가상 머신을 사용하고 컴파일하는 것이 좋습니다.

+0

하실 수 있습니다! 나는이 일을 성공적으로 완료했습니다.GCC는 이식성이 뛰어납니다. 휴대용이 아닌 지원 구조 (라이브러리 및 커널 인터페이스)입니다. 크로스 컴파일러를 만드는 것은 그리 쉽지 않습니다. 부지런한 분야의 광산이 많이 있습니다. 요즘 가상 머신의 편재성을 고려할 때 가상 머신을 사용하는 것이 더 쉽고 안전합니다. –

3

크로스 컴파일러를 설정해야합니다.

  1. 다운로드 binutils, gccglibc 다음 GNU 툴체인을 사용하는 과정은 다음과 같이 보인다.
  2. 빈탱수 (binutils-x.y.z와 같은 항목).
  3. 에서 mkdir 바이너리 유틸리티 - 리눅스
  4. CD를 바이너리 유틸리티 - 리눅스는
  5. ../binutils-xyz/configure --target = i386을-우분투 리눅스 (정확한 목표에 확실하지)
  6. sudo를 만들 make install
  7. cd ..
  8. untar gcc (gcc-xyz와 같은 것으로).
  9. 에서 mkdir GCC-리눅스
  10. CD GCC-리눅스는
  11. ../gcc-xyz/configure --target = i386을-우분투 리눅스 (정확한 목표에 확실하지)
  12. sudo를 만들 설치하기
  13. CD ..
  14. 에서 mkdir의 glibc-리눅스
  15. CD glibc에-LINX
  16. (glibc는-XYZ 같은 뭔가를)
  17. 의 압축을 풉니의 glibc
  18. sudo를 만들
  19. ../glibc-xyz/configure --target = i386을-우분투 리눅스 (정확한 대상 확인되지 않음) ..

I

  • 설치 CD 만들기 OSX를 호스트 OS로 사용해 본 적이 없으므로 다른 복잡한 문제가 있는지는 알 수 없지만 일반적인 접근 방법입니다. 메모리에서 작업 중이므로 더 많은 도움이 필요하면 의견을 추가하십시오.

  • +0

    정보를 제공해 주셔서 감사합니다. 나는 컴파일을 위해 VirtualBox에 Ubuntu의 복사본을 설치하려고한다고 생각한다. 그것은 가장 쉬운 길처럼 보입니다. –

    +0

    당신은 당신이 목표로하는 배포판에 가까운 리눅스 커널 헤더를 필요로 할 것입니다. GLIBC는 커널을 가지고 있지 않으면 커널과 인터페이스 할 수 없습니다. –

    +0

    gcc를 컴파일하는 데 몇 분이 걸릴 것입니다 ... binutils 및 glibc에 대해서도 올바른 구성 옵션을 얻으려면 조사가 필요할 수 있습니다. – RBerteig

    관련 문제