2009-05-13 9 views
2

64 비트 시스템에서 DMD로 프로그램을 컴파일하는 가장 좋은 방법은 무엇입니까? 64Bit 코드로 컴파일 할 필요가 없습니다. 나는 GDC에 대해서 알고 있지만 D2와 함께 일하고 싶다. chroot도 있지만 간단한 방법을 기대하고 있습니다.64 비트 Linux에서 DMD로 컴파일하거나 32 비트 오브젝트 파일과 연결

실제 문제는 컴파일하는 것이 아니라 연결하는 것입니다. DMD는 GCC를 호출하여 시스템 라이브러리와 연결을 수행합니다. DMD에서 32 비트 라이브러리와 GCC 링크를 연결할 수 있습니까? 아니면 수동으로 어떻게해야합니까?

이미 DMD를 실행할 수있는 이유는 ia32 라이브러리가 이미 설치되어 있기 때문입니다.

답변

5

GCC에게 '-m32' 플래그를 전달하여 32 비트 링크를 수행하도록 요청하십시오.

DMDgcc을 호출하지 않고 직접 ld을 호출합니다. 해당 ld 스위치는 '-melf_i386'이고, 분명히 DMD이 링커에 해당 옵션을 전달하는 방법은 '-L-melf_i386' 플래그입니다.

많은 시스템이 런타임 및 개발 라이브러리를 구분한다는 점에 유의하십시오. 32 비트 런타임 패키지는 거의 항상 기본적으로 설치되지만 32 비트 개발 패키지는 기본적으로 설치되지 않을 수 있습니다.

개발 32 비트 프로그램을 빌드하려면 32 비트 패키지가 필요합니다. 32 비트 DMD을 실행할 수 있다는 사실 자체만으로는 32 비트 프로그램을 빌드하는 데 필요한 모든 32 비트 라이브러리가 있다는 것을 증명하지 못합니다.

+0

감사합니다. 그리고 답을 완성하기 위해 개발에 필요한 패키지는 gcc-multilib입니다. 또한 내가 사용했던 스위치는 -melf_i386이었고 dmd를 gcc -L-melf_i386으로 전달했습니다. 답변을 업데이트 할 수 있습니까? –