For whom in trouble of segmentation faults using ocamlc -output-obj with caml_startup(). The RULE is, if you cannot have argv, you must prepare it by yourself properly, and, NOT USE caml_startup(NULL)!

To have the minimal correct argv, you can use the following code:
char *argv[2];
argv[0] = malloc(1);
argv[0][0] = 0;
argv[1] = NULL;
ちゃんとサボらずに argv を作らないとはまります。