Home
Objective Caml
ocaml@conference.jabber.ru
Понедельник, 3 августа 2009< ^ >
f[x] установил(а) тему: Камль -- http://caml.inria.fr | Логи -- http://chatlogs.jabber.ru/ocaml@conference.jabber.ru/ | Верблюды грязи не боятся!
Конфигурация комнаты

GMT+4
[00:02:11] DiGiTAL_CuRSe вышел(а) из комнаты
[00:43:38] sceptic вышел(а) из комнаты
[04:06:44] daapp вошёл(а) в комнату
[07:25:59] daapp вышел(а) из комнаты: Replaced by new connection
[07:26:02] daapp вошёл(а) в комнату
[08:16:04] daapp вышел(а) из комнаты
[08:31:23] gds вышел(а) из комнаты
[08:56:26] DiGiTAL_CuRSe вошёл(а) в комнату
[08:59:45] gds вошёл(а) в комнату
[09:53:40] Typhon вошёл(а) в комнату
[11:21:59] <gds> впервые использовал constraint на типе данных. Оказывается, совсем не больно.
с другой стороны, с Condition у меня тупняк. Допустим, есть очередь:Queue.t, и хочу, чтобы одна нить ждала, пока в неё не запихнут данные. Предполагаю, что ожидание должно быть сделано как-то наподобие:
Mutex.lock mut; while .. do ( Condition.wait cond mut; Queue.pop до упора ); Mutex.unlock mut
тогда как запись в неё должна быть такой:
Queue.push ..; Condition.signal cond
Подтвердите или опровергните, если не влом.
[11:23:36] DiGiTAL_CuRSe вышел(а) из комнаты
[11:24:03] <gds> а хотя, наверное, запись тоже должна быть окружена мутексом, но не совсем ясно, как именно.
[11:30:08] sceptic вошёл(а) в комнату
[12:07:35] daapp вошёл(а) в комнату
[14:18:04] daapp вышел(а) из комнаты
[15:24:20] ak79 вошёл(а) в комнату
[16:23:25] sevenov вышел(а) из комнаты
[16:34:21] ak79 вышел(а) из комнаты
[17:07:31] Mon вышел(а) из комнаты
[17:08:25] Mon вошёл(а) в комнату
[17:27:40] gds вышел(а) из комнаты
[18:13:40] <ermine> кто-нибудь делал С биндинг с использованием камлобилда?
[18:14:06] <ermine> камлобилд не видил стаб-либлу при линковке тестовой программы
[18:20:26] Mon вышел(а) из комнаты
[18:21:25] Mon вошёл(а) в комнату
[18:30:31] Mon вышел(а) из комнаты
[18:34:04] Mon вошёл(а) в комнату
[18:41:04] Mon вышел(а) из комнаты
[18:51:50] Typhon вышел(а) из комнаты
[18:53:32] Mon вошёл(а) в комнату
[19:05:12] gds вошёл(а) в комнату
[20:15:32] sevenov вошёл(а) в комнату
[21:31:50] sevenov вышел(а) из комнаты
[22:09:04] sevenov вошёл(а) в комнату
[22:16:18] sevenov вышел(а) из комнаты
[22:17:04] sevenov вошёл(а) в комнату
[22:32:00] sceptic вышел(а) из комнаты
[22:53:39] <ermine> заработало в двух случаях из трех
[22:56:00] <ermine> интересно, что надо писать в -dllpath - только асболютный путь?
[22:56:15] <gds> -dllpath -- чья опция?
[22:56:47] <ermine> опция ocamlc
[22:57:02] <ermine> при генерации библиотеки
[22:57:34] <ermine> это путь к dlllib.so, которая создается из твоего биндинга
[22:58:38] <ermine> вот у меня линковка с этой библиотекой работает при статической компиляции в байткоде и в нейтив-коде и не работает при динамической линковке в байткоде
[22:59:35] <gds> посмотрел; для ocamlc -- опция, где искать и откуда грузить, а не "при создании".
динамическая линковка всегда была другой -- вспомни #load "dynlink.cma" в топлевеле при всяких #load "camlp4r.cma".
[23:01:23] <ermine> вот у меня вопрос было - пчу не работает загрузка при неабсолютном пути
[23:01:36] <gds> LD_LIBRARY_PATH или как там его попробуй поставить при динамической загрузке байткодовской библиотеки. тут хотя бы станет ясно, в чём дело.
[23:01:46] <ermine> ща проверю, пашыт ли если прописать абсолютный путь
[23:02:46] <gds> и может есть смысл в
val add_interfaces : string list -> string list -> unit
add_interfaces units path grants dynamically-linked object files access to the compilation units named in list units. The interfaces (.cmi files) for these units are searched in path (a list of directory names).
[23:02:58] <ermine> непашыт
[23:02:59] <ermine> хм
[23:03:52] <ermine> да мне б сначала понять как оно должно работать вообще
[23:04:53] <gds> при динлинке -- по идее, динамически подгружает сошку (dlopen всякое).
[23:05:07] <gds> кстати, может игрища в топлевеле помогут.
[23:06:27] <ermine> не умею в топлевеле
[23:07:16] <ermine> я ж с неинсталлированными библиотеками работаю: в противном случае у ocaml есть свой ld.conf
[23:07:49] ermine почесала репку
[23:08:58] <gds> ну в lsd.conf пропиши, чисто поглядеть, получится ли.
[23:09:21] ermine хихикает
[23:11:40] <gds> "
— Лампочка, значит, — сказал старичок, хихикая и потирая руки. — Кодируем помаленьку.
"
[23:15:36] <ermine> через ld.conf тоже непашыт
[23:15:39] <ermine> интересно
[23:16:15] <gds> cat your.cmo | strings | grep libraryname ?
[23:16:59] <ermine> cat лишнее :)
[23:17:10] <gds> cat универсальное.
[23:17:32] <gds> т.е. нет ли чего в cmo про пути.
да и заодно покажь-ка, какой командой собираешь .cmo.
[23:19:22] <ermine> а нету таких строчек в cmo
[23:20:01] <ermine> cma не лучше
[23:20:50] <ermine> хотя нет, вру, есть -L
[23:21:12] <gds> у меня мысль отстаёт на полшага, да :)
зависимости на сошки прописываются (если и), то только в cma.
вроде грузить их так же, как .cmo. Может оттуда начать путь снова, с LD_* и ld.conf?
[23:23:15] <gds> а вообще хреновый из меня советчик. До сих пор не знаю, как работает этот фокус с динамической линковкой сишных динамических библиотек.
А то, что собирал, обычно собирал без особой системы, интуитивно.
[23:33:33] <gds> и в подобных низкоуровневых-системных вопросах такая статистика: трачу время на высокоуровневые игрища (шаманство, окружение, хинты, что угодно), частенько не получается ничего, и трачу ещё ровно столько же (а часто и меньше) времени на разбор системы вниз-вглубь, реденько доходя вплоть до разбора ассемблерного кода. И при этом по-любому быстрее получается, чем шаманством.
Надо бы дать себе установку быстрее переключаться с шаманства на анализ.
[23:35:42] ermine тоскливо скрипит мозгой
[23:37:05] <gds> думаешь, изучать ТК легче? no wai.
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!