{"id":79,"date":"2007-05-02T16:58:16","date_gmt":"2007-05-02T16:58:16","guid":{"rendered":"http:\/\/newblog.mix1009.net\/?p=79"},"modified":"2007-05-02T16:58:16","modified_gmt":"2007-05-02T16:58:16","slug":"ocaml-findlib-ocamlfind","status":"publish","type":"post","link":"https:\/\/mix1009.net\/?p=79","title":{"rendered":"ocaml findlib : ocamlfind"},"content":{"rendered":"<p>OCaml \uc5b8\uc5b4\uc5d0 \uc608\uc804\ubd80\ud130 \uad00\uc2ec\uc774 \ub9ce\uc558\uc5c8\ub294\ub370, \uc624\ub79c\ub9cc\uc5d0 \ub2e4\uc2dc \ubcf4\ub2c8 \uc0c8\ub86d\uad70\uc694. \uadf8\uc804\uc5d0 \ubc30\uc6b0\uba74\uc11c CVS\uc5d0 \uc62c\ub838\ub358 \ub0a0\uc9dc\ub97c \ubcf4\ub2c8 2002\ub144\uc774\ub124\uc694. 5\ub144\uc774 \uc9c0\ub0ac\uc9c0\ub9cc \uc2e4\uc804\uc5d0 \uc544\uc9c1 OCaml\ub97c \uc4f8 \uae30\ud68c\uac00 \uc5c6\ub2e4\ubcf4\ub2c8 \uc870\uae08 \uc548\uc4f0\ub2e4\ubcf4\uba74 \uae4c\uba39\uc5b4\uc11c \uc790\uafb8 \ub2e4\uc2dc \ubc30\uc6b0\uac8c \ub418\ub124\uc694.<\/p>\n<p>\uadf8 \uc804\uc5d0 \ubc30\uc6b8\ub54c\ub294 OCaml\uc5d0 \ud3ec\ud568\ub41c \uae30\ubcf8 \ucef4\ud30c\uc77c\ub7ec\ub9cc make\uc640 \ubcd1\ud589\ud574\uc11c \uc0ac\uc6a9\ud588\uc5c8\ub294\ub370, <a href=\"http:\/\/www.xs4all.nl\/%7Emmzeeman\/ocaml\/\">ocaml-event<\/a> \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uae54\ub2e4\ubcf4\ub2c8 ocamlfind\ub77c\ub294 \uc2e4\ud589\ud30c\uc77c\uc744 \ud1b5\ud574\uc11c \uc778\uc2a4\ud1a8\ud558\uac8c \ub418\uc5b4 \uc788\ub354\uad70\uc694. ocaml-event\ub294 libevent\uc758 ocaml\uc5d0\uc11c \uc0ac\uc6a9\ud560\uc218 \uc788\ub3c4\ub85d \ud558\ub294 \ub77c\uc774\ube0c\ub7ec\ub9ac\uc785\ub2c8\ub2e4. FreeBSD ports\uc911\uc5d0 \/usr\/ports\/devel\/ocaml-findlib\ub97c \uae54\uace0, ocaml-event\ub294 \uc218\ub3d9\uc73c\ub85c \uc18c\uc2a4\ub97c \ucef4\ud30c\uc77c\ud558\uc5ec \uc778\uc2a4\ud1a8\ud588\uc2b5\ub2c8\ub2e4. \/usr\/ports\/devel\/ocaml-event \uc5d0 \uc788\uc9c0\ub9cc \uc5ec\uae30\uc11c \uc778\uc2a4\ud1a8\ud558\uba74 ocamlfind\uc5d0 \ub4f1\ub85d\uc774 \uc774\uc0c1\ud558\uac8c \uc548\ub418\ub354\uad70\uc694&#8230;<\/p>\n<p>ocaml-findlib\ub97c \uae54\uba74 \uc911\uc2ec \uc2e4\ud589\ud30c\uc77c\uc774 ocamlfind\uc778\ub370, \uc774 \ud30c\uc77c\uc774 \uc0c1\ub2f9\ud788 \ub2e4\uc591\ud55c \uae30\ub2a5\ub4e4\uc740 \uac00\uc9c0\uace0 \uc788\uc2b5\ub2c8\ub2e4. Ocaml \ub77c\uc774\ube0c\ub7ec\ub9ac\/\ud504\ub85c\uadf8\ub7a8 \uc778\uc2a4\ud1a8, \uc5b8\uc778\uc2a4\ud1a8, \ucef4\ud30c\uc77c, \uc18c\uc2a4\uc5d0\uc11c \ubb38\uc11c \ucd94\ucd9c, \ub77c\uc774\ube0c\ub7ec\ub9ac \uc885\uc18d\uc131 \uc870\ud68c, \ub77c\uc774\ube0c\ub7ec\ub9ac \ube0c\ub77c\uc6b0\uc9d5 \ub4f1\uc758 \uae30\ub2a5\uc744 \uc81c\uacf5\ud558\uba70, \ube0c\ub77c\uc6b0\uc9d5\uc758 \uacbd\uc6b0 Tk\ub97c \uc774\uc6a9\ud558\uc5ec X11 \ud658\uacbd\uc5d0\uc11c\ub9cc \uc2e4\ud589\ub429\ub2c8\ub2e4. \uc790\uc138\ud55c \uac83\uc740 man \ud398\uc774\uc9c0\ub098 <a href=\"http:\/\/www.ocaml-programming.de\/packages\/documentation\/findlib\/guide-html\/\">findlib user guide<\/a> \ubb38\uc11c\ub97c \ucc38\uace0\ud558\uc138\uc694.<\/p>\n<p>\uc800\ub294 \ucef4\ud30c\uc77c \ud560\ub54c ocamlc\ub098 ocamlopt\ub97c \ubc14\ub85c \ud638\ucd9c\ud558\uc9c0 \uc54a\uace0 ocamlfind\ub97c \ud1b5\ud574\uc11c \ud638\ucd9c\ud55c \ubc29\ubc95\ub9cc \uc124\uba85\ub4dc\ub9ac\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4. ocamlc\ub294 \uc790\ubc14\ucc98\ub7fc byte code \ud615\ud0dc\ub85c \ucef4\ud30c\uc77c\ub418\uace0, ocamlopt\ub294 \ud0c0\uac9f CPU\uc5d0\uc11c\ub9cc \uc2e4\ud589\ub418\ub294 native \ud615\ud0dc\ub85c \ucef4\ud30c\uc77c\uc774 \ub429\ub2c8\ub2e4. \ud55c ocaml \ud504\ub85c\uadf8\ub7a8 \ub0b4\uc5d0\uc11c byte code\uc640 native code\ub85c \ucef4\ud30c\uc77c\ub41c\uac83\uc744 \ub9c1\ud06c\ud560\uc218 \uc5c6\uc73c\ubbc0\ub85c Makefile\ub97c \uc774\uc6a9\ud55c\ub2e4\uba74 \uc774\ub97c \ub530\ub85c\ub530\ub85c \uad00\ub9ac\ud574\uc57c\ud569\ub2c8\ub2e4. ocamlfind\ub97c \uc774\uc6a9\ud558\uba74 cmo(byte code object)\ub098 cmx(native object)\ub97c \uc9c0\uc815\ud558\uc9c0 \uc54a\uc544\ub3c4 \ub418\uc11c Makefile\uc758 \ud06c\uae30\uac00 \ub9ce\uc774 \uc904\uc5b4\ub4dc\ub294\uac83 \uac19\ub124\uc694. \ub77c\uc774\ube0c\ub7ec\ub9ac \uc9c0\uc815\ub3c4 cma, cmxa\ub97c \ub530\ub85c \uc9c0\uc815\ud558\uc9c0 \uc54a\uc73c\uba70, \ub610\ud55c \ub77c\uc774\ube0c\ub7ec\ub9ac\uc758 \uc885\uc18d\uc131\uc744 \uc790\ub3d9\uc73c\ub85c \ud310\ub2e8\ud558\uc5ec \ub77c\uc774\ube0c\ub7ec\ub9ac \ub9c1\ud06c \uc21c\uc11c\ub3c4 \uc790\ub3d9\uc73c\ub85c \ud310\ub2e8\ud574\uc8fc\ub294\uac70 \uac19\uc2b5\ub2c8\ub2e4.<\/p>\n<p>\uc608\uc804\uc5d0 \uc9f0\ub358 echo_server fork\ubc84\uc804\uacfc thread\ubc84\uc804\uc758 Makefile.old\uc640 \ubcc0\uacbd\ub41c Makefile.new\uc744 \ube44\uad50\ud574\ubcf4\uc2dc\uba74 ocamlfind\uac00 \uc720\uc6a9\ud558\ub2e4\ub294\uac78 \ub290\ub07c\uc2e4\uc218 \uc788\uc744\uac81\ub2c8\ub2e4. \uadf8\ub9ac\uace0 Makefile.old\ub294 native\ub85c \ucef4\ud30c\uc77c\ud560\ub824\uba74 \ub9ce\uc740 \ubd80\ubd84 \uace0\uccd0\uc57c\ud558\uc9c0\ub9cc, Makefile.new\uc5d0\uc11c\ub294 \ud55c\uc904\ub9cc \ubc14\uafb8\uba74 \ub429\ub2c8\ub2e4.<\/p>\n<p>[CODE type=make]<br \/>\n# Makefile.old<br \/>\n# Copyright (c) 2002 Chun-Koo Park<\/p>\n<p>OCAMLC=ocamlc<br \/>\nOCAMLCFLAGS=-thread<br \/>\n.SUFFIXES: .ml .mli .cmo .cmi<\/p>\n<p>LIBS=unix.cma<\/p>\n<p>EXEC=echo_server_fork echo_server_thread<br \/>\nall: $(EXEC)<\/p>\n<p>clean:<br \/>\n &nbsp;&nbsp; rm -f *.cmo *.cmi *.cmx *.o $(EXEC) .depend<\/p>\n<p>.mli.cmi:<br \/>\n &nbsp;&nbsp; $(OCAMLC) $(OCAMLCFLAGS) -c $&lt;<\/p>\n<p>.ml.cmo:<br \/>\n &nbsp;&nbsp; $(OCAMLC) $(OCAMLCFLAGS) -c $&lt;<\/p>\n<p>echo_server_fork: $@.cmo $(OBJS)<br \/>\n &nbsp;&nbsp; $(OCAMLC) -o $@ $(OCAMLCFLAGS) $(LIBS) $@.cmo<\/p>\n<p>echo_server_thread: $@.cmo $(OBJS)<br \/>\n &nbsp;&nbsp; $(OCAMLC) -thread -o $@ $(OCAMLCFLAGS) unix.cma threads.cma $@.cmo<\/p>\n<p># vi:set noet:<br \/>\n[\/HTML][\/CODE]<\/p>\n<p>[CODE type=make]<br \/>\n# Makefile.new<br \/>\n# Copyright (c) 2007 Chun-Koo Park<\/p>\n<p>OCAMLC=ocamlfind ocamlc<br \/>\n#OCAMLC=ocamlfind ocamlopt<\/p>\n<p>EXEC=echo_server_fork echo_server_thread<br \/>\nall: $(EXEC)<\/p>\n<p>echo_server_fork: echo_server_fork.ml<br \/>\n &nbsp;&nbsp; $(OCAMLC) -o $@ -package unix -linkpkg $&lt;<\/p>\n<p>echo_server_thread: echo_server_thread.ml<br \/>\n &nbsp;&nbsp; $(OCAMLC) -o $@ -thread -package &#8220;threads unix&#8221; -linkpkg $&lt;<\/p>\n<p>clean:<br \/>\n &nbsp;&nbsp; rm -f *.cmo *.cmi *.cmx *.o $(EXEC) .depend<\/p>\n<p># vi:set noet:<br \/>\n[\/HTML][\/CODE]<\/p>\n<p>\n\uc704 Makefile \ub4e4\uc740 FreeBSD\uc5d0\uc11c BSD Parallel Make\uc5d0\uc11c \ud14c\uc2a4\ud2b8\ub41c \ud30c\uc77c\ub4e4\uc785\ub2c8\ub2e4. \ub9c8\uc9c0\ub9c9 \uc904\uc740 vim\uc5d0\uc11c \ud0ed\uc744 \uc790\ub3d9\uc73c\ub85c \uacf5\ubc31\uc73c\ub85c \ud655\uc7a5\ud558\uc9c0 \uc54a\ub3c4\ub85d \ud558\ub294 \uba85\ub839\uc785\ub2c8\ub2e4. (noexpandtab)<\/p>\n<p>findlib\uc5d0 \ud3ec\ud568\ub41c make_wizard\ub97c \uc0ac\uc6a9\ud558\uba74 \uc704\uc800\ub4dc \ud615\ud0dc\ub85c 7\ub2e8\uacc4\ub85c Makefile\ub97c \ub9cc\ub4e4\uc5b4\uc90d\ub2c8\ub2e4. \uc0dd\uc131\ub418\ub294 Makefile\uc774 \uc0c1\ub2f9\ud788 \uae38\uace0, \uc0dd\uc131\ub41c Makefile\uc740 \uc704\uc800\ub4dc\ub85c \ud3b8\uc9d1\uc774 \ubd88\uac00\ub2a5\ud558\uae30 \ub54c\ubb38\uc5d0 \uc0ac\uc6a9\uc774 \uaebc\ub824\uc9c0\uae34 \ud569\ub2c8\ub2e4. \ud558\uc9c0\ub9cc, \ucc38\uace0\ud560\ub9cc\ud55c \ub9c8\ub545\ud55c Makefile\uc774 \ubcc4\ub85c \uc5c6\uc5c8\ub294\ub370 \uc18c\uc2a4\ub9cc \ubd10\ub3c4 \ud070 \ub3c4\uc6c0\uc774 \ub420\ub4ef\ud558\ub124\uc694. \ub2e4\uc74c\uc740 make_wizard\ub97c \uc2e4\ud589\ud55c \ud654\uba74\uc785\ub2c8\ub2e4.<\/p>\n<p><img loading=\"lazy\" src=\"https:\/\/mix1009.net\/wp-content\/uploads\/1\/1043104280.png\" class=\"aligncenter\" width=\"500\" height=\"418\" alt=\"\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>OCaml \uc5b8\uc5b4\uc5d0 \uc608\uc804\ubd80\ud130 \uad00\uc2ec\uc774 \ub9ce\uc558\uc5c8\ub294\ub370, \uc624\ub79c\ub9cc\uc5d0 \ub2e4\uc2dc \ubcf4\ub2c8 \uc0c8\ub86d\uad70\uc694. \uadf8\uc804\uc5d0 \ubc30\uc6b0\uba74\uc11c CVS\uc5d0 \uc62c\ub838\ub358 \ub0a0\uc9dc\ub97c \ubcf4\ub2c8 2002\ub144\uc774\ub124\uc694. 5\ub144\uc774 \uc9c0\ub0ac\uc9c0\ub9cc \uc2e4\uc804\uc5d0 \uc544\uc9c1 OCaml\ub97c \uc4f8 \uae30\ud68c\uac00 \uc5c6\ub2e4\ubcf4\ub2c8 \uc870\uae08 \uc548\uc4f0\ub2e4\ubcf4\uba74 \uae4c\uba39\uc5b4\uc11c \uc790\uafb8 \ub2e4\uc2dc \ubc30\uc6b0\uac8c \ub418\ub124\uc694. \uadf8 \uc804\uc5d0 \ubc30\uc6b8\ub54c\ub294 OCaml\uc5d0 \ud3ec\ud568\ub41c \uae30\ubcf8 \ucef4\ud30c\uc77c\ub7ec\ub9cc make\uc640 \ubcd1\ud589\ud574\uc11c \uc0ac\uc6a9\ud588\uc5c8\ub294\ub370, ocaml-event \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uae54\ub2e4\ubcf4\ub2c8 ocamlfind\ub77c\ub294 \uc2e4\ud589\ud30c\uc77c\uc744 \ud1b5\ud574\uc11c \uc778\uc2a4\ud1a8\ud558\uac8c \ub418\uc5b4 \uc788\ub354\uad70\uc694. ocaml-event\ub294 libevent\uc758 ocaml\uc5d0\uc11c \uc0ac\uc6a9\ud560\uc218 \uc788\ub3c4\ub85d [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[19],"tags":[76,38,77],"_links":{"self":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/posts\/79"}],"collection":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=79"}],"version-history":[{"count":0,"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/posts\/79\/revisions"}],"wp:attachment":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=79"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=79"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mix1009.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=79"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}