2014-12-18 9 views
5

OCaml projemi OCaml yüklü olmayan diğer bilgisayarlarda çalıştırılabilen bir yürütülebilir dosya olarak derlemek istiyorum. Ocamlbuild kullanarak, bir ".native" dosyası derlerken diğer makinelerde iyi çalışır, ancak bir ".byte" dosyası derlerse, yürütülebilir dosyayı çalıştırmaya çalıştığımda bir Cannot exec ocamlrun iletisiyle başarısız olur.OCaml kodumu tek başına bir bayt kodu yürütülebilir olarak nasıl derlerim?

Programımın bayt kodu sürümü dosya boyutu açısından önemli ölçüde küçük olduğundan, bunu yerel kod yerine dağıtmayı tercih ediyorum. Ocamlrun'u derlediğimde yürütülebilir dosyaya yerleştirmenin bir yolu var mı?

+1

Ocamlrun'u bayt kodunuzla birleştirirseniz, programınızın boyutunun yerel sürümle karşılaştırılabilir veya daha büyük olacağını söyleyebilirim. Ben haklı mıyım –

+0

@AnthonyScemama: evet, thats ne sonuçlandı:/ – hugomg

cevap

7

Sen ocamlc kullanıcı manual itibaren, özel bir modda derleme gerekir: “Özel çalışma zamanı” modunda

-Özel

Linki. Varsayılan bağlantı modunda, linker, paylaşılan çalışma zamanı sistemi, ocamlrun ile yürütülmesi amaçlanan bayt kodu üretir. Özel çalışma zamanı modunda, bağlayıcı, hem çalışma zamanı sistemini hem de programın bayt kodunu içeren bir çıktı dosyası üretir. Ortaya çıkan dosya daha büyüktür, ancak ocamlrun komutu yüklü olmasa bile, doğrudan çalıştırılabilir. bölüm

Unix anlatıldığı gibi Dahası, “Özel çalışma zamanı” modunda, kullanıcı tanımlı C fonksiyonları ile OCaml kod bağlayan statik sağlar: ocamlc -Özel tarafından üretilen yürütülebilir üzerinde şerit komutunu kullanmayın, bu bayt kodu ortadan kaldıracaktır yürütülebilir dosyanın bir parçası.

Eğer oasis kullanıyorsanız o zaman gereken tüm ocamlbuild için, benzer şekilde, sizin yürütülebilir bölümüne Custom : true alan eklemek -tag custom eklemek veya _tags özel koymaktır.

+3

benzer şekilde, ocamlbuild için '-tag özel' ekleyin ya da '_tags' – unhammer

+0

'a özel notu ekleyin ve sadece cevabı düzenlemek için korkmayın. bir işbirliği aracıdır. – ivg

İlgili konular