Я использую dirname из libgen.h, чтобы получить путь к каталогу из пути к имени файла.
Это его подпись:
char * dirname (char *path)
При компиляции на 32-битной машине или использовании -m32 с gcc все работает нормально.
Мой код выглядит так:
char* path = "/path/to/my/file.txt";
char* path_cpy = strdup(path);
const char* dir = (const char*)dirname(path_cpy);
Если я компилирую на 64-битной машине, я получаю предупреждение:
"warning: cast to pointer from integer of different size"
Это исправит предупреждение, но вылетает во время выполнения:
const char* dir = (const char*)(uintptr_t)dirname(path_cpy);
Я никогда раньше не пытался кросс-компилировать 32/64 бит, есть ли способ это исправить?