이것에 대해 많은 문서를 찾을 수 없습니다. 보석이 설치 될 때 C 확장이 컴파일되도록 보석을 어떻게 포장합니까? 특히 Ruby Gem에서 Ruby C 확장을 마무리하려면 어떻게합니까?
나는이 작업을 수행 할 수 : 리눅스와에서라도에나는 단순히 미리 컴파일 된 .so를 설치하고자하는 보석의 C 확장 Windows에서
를 설치 컴파일 싶습니다
여기에 대한 도움, 특정 예제 소스에 매우 유용 할 것이다 :
이것에 대해 많은 문서를 찾을 수 없습니다. 보석이 설치 될 때 C 확장이 컴파일되도록 보석을 어떻게 포장합니까? 특히 Ruby Gem에서 Ruby C 확장을 마무리하려면 어떻게합니까?
나는이 작업을 수행 할 수 : 리눅스와에서라도에나는 단순히 미리 컴파일 된 .so를 설치하고자하는 보석의 C 확장 Windows에서
를 설치 컴파일 싶습니다
여기에 대한 도움, 특정 예제 소스에 매우 유용 할 것이다 :
Luis Lavena은이 목적으로 만 rake-compiler
을 생성했습니다.
아마도 Ruby-FFI을 사용하는 것이 더 나을 것입니다. Ruby-FFI는 루비 용 FFI (Foreign Function Interface)입니다 (duh). Ruby 구현에서 이식 가능한 방식으로 순수 루비에서 C 라이브러리에 바인딩하고 매핑 할 수 있습니다. FFI API는 Rubinius에 대한 기본 확장 API로 Evan Phoenix에 의해 처음 개발되었으며 JRuby에 대해 Charles Oliver Nutter (및 Wayne Meissner으로 구현 됨)으로 채택되었습니다. Wayne 또한 MRI와 YARV에 대한 C 확장을 포함하는 Ruby-FFI gem을 작성했습니다. Laurent Sansonetti은 MacRuby, Marc-André Cournoyer의 tinyrb도 supports FFI (다시 쓰여진 사람은 Wayne Meissner)이고 MagLev 개발자도 Ruby-FFI를 구현했습니다. 즉, C 확장자가 아닌 FFI로 라이브러리를 작동시킬 수 있다면, 자동으로 6 개의 Ruby 구현을 지원할 것입니다.
FFI 확장과 반대되는 C 확장을 사용하는 유일한 이유는 실제로 일 경우이 특정 구현 동작을 원할 경우입니다. 이것의 한 예가 ParseTree 젬으로 MRI의 장내 깊숙이 침투하여 파스 트리의 메모리 내 표현을 추출합니다.
마지막으로 Nice-FFI 프로젝트를 John Croisant으로 살펴보면 Ruby-FFI을 더 멋지게 만드는 것을 목표로합니다.
나는 내 자신의 참조만을 위해 유지하는 github repo를 가지고 있으며 이러한 것들이 나를 도왔다.
이미 당신의 연구에 기록 된 보석의 좋은 예를 찾을 가서 그들을 복제하고 시스템에이를 구축 할 수 있는지 확인하기 위해 GitHub의에 주위를 둘러하는 데 도움이 될 수 있습니다. 그들은 함께 모이면 제대로 지어야합니다.
사용중인 플랫폼에 빌드 도구가 필요합니다. 여기 내가 방금 본 비디오가 리눅스에 필요한 것을 알려줍니다.
Python Programming Environment Setup
지금 나는 파이썬을 말한다, 그가 어떻게 빌드 도구 패키지를 설치하는 방법을 보여 않는다는 것을 알고있다.
저는 Windows 용 DevKit을 사용하며 제게 적합합니다. 무엇보다도 도구 설치가 가장 중요합니다.
또한 rake-compiler와 hoe를 사용하여 폴더 구조를 설정했습니다. 그래서 우리는 갈퀴와 괭이를 얻어서 약간의 원예를 기울여야 만하는 것처럼 보입니다. :-D
와우, 멋지 네요! 감사합니다 :) – horseyguy
당신을 환영합니다! 그런데 총 에고가있었습니다. 저는 Windows에서 Ruby를 사용하기 때문에 더 많은 확장 프로그램 작성자가 레이크 컴파일러를 사용하면 더 많은 확장 프로그램이 Windows 용으로 게시됩니다! (하지만 내 편집을 참조하십시오.) –
이 답변은 '09에서 온 것 같아서 일부 답변은 업데이트해야합니다. – Tilo