msys2 конфликты заголовков
От: pva  
Дата: 19.05.25 16:34
Оценка: 3 (1)
Привет,

воткнул с одной проблемой, не получается быстро разрулить — прошу помощи.
При сборке проектов через MSYS2 вылазят разные бока с конфликтом объявлений хедеров, специфичных для окружения (UCRT64 или MINGW64, например) /ucrt64|mingw64/include и системных из /usr/include.
  Пример
C:/msys64/usr/include/stdlib.h:39:3: error: conflicting declaration 'typedef struct div_t div_t'
   39 | } div_t;
      |   ^~~~~
C:/msys64/mingw64/include/stdlib.h:63:5: note: previous declaration as 'typedef struct _div_t div_t'
   63 |   } div_t;
      |     ^~~~~

Не пойму как это разрулить. Может для cmake(g++) как-то можно задать приоритет обхода?
newbie
Re: msys2 конфликты заголовков
От: B0FEE664  
Дата: 20.05.25 16:37
Оценка: 4 (1)
Здравствуйте, pva, Вы писали:

pva>При сборке проектов через MSYS2 вылазят разные бока с конфликтом объявлений хедеров, специфичных для окружения (UCRT64 или MINGW64, например) /ucrt64|mingw64/include и системных из /usr/include.

pva>Не пойму как это разрулить. Может для cmake(g++) как-то можно задать приоритет обхода?

--sysroot=dir
Use dir as the logical root directory for headers and libraries. For example, if the compiler normally searches for headers in /usr/include and libraries in /usr/lib, it instead searches dir/usr/include and dir/usr/lib.

И каждый день — без права на ошибку...
Re: msys2 конфликты заголовков
От: comm Россия http://bipulse.ru
Дата: 20.09.25 23:47
Оценка:
Здравствуйте, pva, Вы писали:

pva>Привет,


pva>воткнул с одной проблемой, не получается быстро разрулить — прошу помощи.

pva>При сборке проектов через MSYS2 вылазят разные бока с конфликтом объявлений хедеров, специфичных для окружения (UCRT64 или MINGW64, например) /ucrt64|mingw64/include и системных из /usr/include.
pva>
  Пример
pva>
C:/msys64/usr/include/stdlib.h:39:3: error: conflicting declaration 'typedef struct div_t div_t'
pva>   39 | } div_t;
pva>      |   ^~~~~
pva>C:/msys64/mingw64/include/stdlib.h:63:5: note: previous declaration as 'typedef struct _div_t div_t'
pva>   63 |   } div_t;
pva>      |     ^~~~~


pva>Не пойму как это разрулить. Может для cmake(g++) как-то можно задать приоритет обхода?


Удалось ли это разрулить с --sysroot ?

Я что-то напоролся на проблему что у меня не находит "следующий хедер" после активации этой опции
 #include_next <stddef.h>


У меня проект уже собирается в cygwin, но хочу ег в msys2 завести для лучшей совместимости.
С уважением, Алексей Васильев. http://bipulse.ru
msys
Re[2]: msys2 конфликты заголовков
От: pva  
Дата: 21.09.25 08:11
Оценка: 3 (1) +1
Здравствуйте, comm, Вы писали:

C>Удалось ли это разрулить с --sysroot ?

Не использовал. Там в msys2 несколько окружений. Необходимо использовать подходящее и пакеты ставить из его пула, не допуская инсталяций из других.
Ну и как всегда пришлось некоторые пакеты сливать из внешних реп (типа микрософтовской), некоторые патчить для компиляции. По итогу на каком-то этапе я забил.
newbie
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.