{"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\" decoding=\"async\" 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":{"footnotes":""},"categories":[19],"tags":[76,38,77],"class_list":["post-79","post","type-post","status-publish","format-standard","hentry","category-19","tag-findlib","tag-ocaml","tag-ocamlfind"],"_links":{"self":[{"href":"https:\/\/mix1009.net\/index.php?rest_route=\/wp\/v2\/posts\/79","targetHints":{"allow":["GET"]}}],"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}]}}