/* add bytecode to lib, and copy the bytecode to the buff in the lib  */
int LibObj_staticLink(LibObj *self, char *module_name, uint8_t *bytecode, size_t size)
/* add bytecode to lib, and copy the bytecode to the buff in the lib  */
int LibObj_staticLink(LibObj *self, char *module_name, uint8_t *bytecode, size_t size)
{
    Args buffs = {0};
    char* module_obj_name = strsReplace(&buffs, module_name, ".", "|");
    if (!obj_isArgExist(self, module_obj_name)) {
        obj_newObj(self, module_obj_name, "", New_TinyObj);
    }
    PikaObj* module_obj = obj_getObj(self, module_obj_name);
    uint16_t name_len = strGetSize(module_name);
    obj_setBytes(module_obj, "buff", bytecode, size);
    obj_setInt(module_obj, "namelen", name_len);
    obj_setInt(module_obj, "bytesize", size);
    LibObj_dynamicLink(self, module_name, obj_getBytes(module_obj, "buff"));
    strsDeinit(&buffs);
    return 0;
}