gcc.exe и путь длиной в 260 символов
От: B0FEE664  
Дата: 08.09.21 14:45
Оценка:
Я снова уткнулся в искусственное ограничение gcc для Windows:


>mkdir \ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd
>cd \ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd
>echo void f(){} > test.c
>gcc --version
gcc (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 5.3.0
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

>mkdir ..\..\..\..\..\..\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\

>dir ..\..\..\..\..\..\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\
Volume in drive C is Windows
Volume Serial Number is 4CF4-5AA5

Directory of C:\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj

2021-09-08 16:26 <DIR> .
2021-09-08 16:26 <DIR> ..
0 File(s) 0 bytes
2 Dir(s) 77 528 666 112 bytes free

>gcc -c -o ..\..\..\..\..\..\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\ooooooooooooooooooooooooooooooooooooooootest.obj test.c

Assembler messages:
Fatal error: can't create ..\..\..\..\..\..\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\ooooooooooooooooooooooooooooooooooooooootest.obj: No such file or directory

однако если путь сделать чуть меньше, то ok:

gcc -c -o ..\..\..\..\..\..\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooooooo12.obj test.c


Длина: \ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\..\..\..\..\..\..\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooooooo12.obj составляет 258 символов, если добавить "C:", то будет ровно 260.

Вопрос: существует такая сборка gcc под Windows, для которой такого дурацкого ограничения (в 260 символов) не существует?
И каждый день — без права на ошибку...
[UPD]Re: gcc.exe и путь длиной в 260 символов
От: ononim  
Дата: 08.09.21 14:53
Оценка: +3
Почему ты думаешь оно искусственное, MAX_PATH в винде равен 260, чтобы это ограничение обойти, программа должна во-первых использовать wide-версии системных АПИ, а во-вторых делать путь с префиксом \\?\.
то есть попробуй

gcc -c -o \\?\ПОЛНЫЙ\ПУТЬ\ВКЛЮЧАЯ\БУКВУ\ДИСКА

и если прокатит — считай повезло, а если нет — НЕФИГ ДЕЛАТЬ ТАКИЕ ПУТИ

UPD А нет, если не прокатит — по ссылке выше есть еще параграф 'Enable Long Paths in Windows 10, Version 1607, and Later'
Как много веселых ребят, и все делают велосипед...
Отредактировано 08.09.2021 15:00 ononim . Предыдущая версия .
Re: gcc.exe и путь длиной в 260 символов
От: niXman Ниоткуда https://github.com/niXman
Дата: 08.09.21 15:02
Оценка:
никогда не сталкивался, но вроде тут всё обяснено: https://stackoverflow.com/questions/1880321/why-does-the-260-character-path-length-limit-exist-in-windows
там даже есть всякие рекомендации как обойти это ограничение...

дай знать если поможет.
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[2]: gcc.exe и путь длиной в 260 символов
От: B0FEE664  
Дата: 08.09.21 16:33
Оценка:
Здравствуйте, niXman, Вы писали:

X>никогда не сталкивался, но вроде тут всё обяснено: https://stackoverflow.com/questions/1880321/why-does-the-260-character-path-length-limit-exist-in-windows

X>там даже есть всякие рекомендации как обойти это ограничение...

X>дай знать если поможет.


Не, это не ограничение Windows. Разумеется длинные пути у меня включены:
  проверка
>mkdir \ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\

>echo asdf > \ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\test.txt


>dir \ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\

Volume in drive C is Windows
Volume Serial Number is 4CF4-5AA5

Directory of c:\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo\ddd\ddd\aaaaaaaaaaaaaaaaaaaaaaaaaaaaa\bbbbbbbbbbb\cccccccccc\ddddddddddddd\build\ddddddddd\ddddddddddddd\ddddddddd\xxxxx\ttttttttt\ttttttttttttt\ttttttttt\tttttttttttttttttttttttttttttttttttttt\obj\oooooooooooooooooooooooooooooooooooo

2021-09-08 18:29 <DIR> .
2021-09-08 18:29 <DIR> ..
2021-09-08 18:29 7 test.txt
1 File(s) 7 bytes
2 Dir(s) 77 234 032 640 bytes free
И каждый день — без права на ошибку...
Re: [UPD]Re: gcc.exe и путь длиной в 260 символов
От: B0FEE664  
Дата: 08.09.21 16:53
Оценка:
Здравствуйте, ononim, Вы писали:

O>Почему ты думаешь оно искусственное,

Потому что длинные пути у меня включены и с ними нет никаких проблем.

O>MAX_PATH в винде равен 260,

Почему MS не переопределить MAX_PATH в 65535 — это отдельный вопрос.

O>чтобы это ограничение обойти, программа должна во-первых использовать wide-версии системных АПИ,

Да. Вот я и спрашиваю: есть такая сборка gcc, которая это умеет?

O>а во-вторых делать путь с префиксом \\?\.

Это должно делаться автоматически: если префикс отсутствует, то добавляем втихую и работаем.

O>то есть попробуй

gcc -c -o \\?\ПОЛНЫЙ\ПУТЬ\ВКЛЮЧАЯ\БУКВУ\ДИСКА

и если прокатит — считай повезло,

Что значит "повезло"? Попрошу заметить, что у меня в примере пути относительные и длина относительных путей не выходит за 260 и это не просто так. Это чтобы если в программе буфер в 260, то чтобы за него не выйти.

O>а если нет — НЕФИГ ДЕЛАТЬ ТАКИЕ ПУТИ

У меня в проекте вложенность каких-то 10 уровней => на длину каталога остаётся каких-то 26 символов. Как при этом работать, если только каталог для .o файлов называется debug-build-gcc-arm-10.3-2021.07-mingw-w64-i686-arm-none-linux-gnueabihf ?

O>UPD А нет, если не прокатит — по ссылке выше есть еще параграф 'Enable Long Paths in Windows 10, Version 1607, and Later'

Как это поможет gcc? Никак не поможет.
И каждый день — без права на ошибку...
Re[2]: [UPD]Re: gcc.exe и путь длиной в 260 символов
От: ononim  
Дата: 08.09.21 17:35
Оценка:
O>>Почему ты думаешь оно искусственное,
O>>UPD А нет, если не прокатит — по ссылке выше есть еще параграф 'Enable Long Paths in Windows 10, Version 1607, and Later'
BFE>Потому что длинные пути у меня включены и с ними нет никаких проблем.
BFE>Как это поможет gcc? Никак не поможет.
Там еще манифестик надо вставить в ресурсы ехе-шника.
В манифестике еще стоит попробовать включить поддержку UTF8 для -A функций, глядишь это еще и длинные пути включит — https://docs.microsoft.com/en-us/windows/apps/design/globalizing/use-utf8-code-page

O>>MAX_PATH в винде равен 260,

BFE>Почему MS не переопределить MAX_PATH в 65535 — это отдельный вопрос.
Хотябы потому что он зашит в WIN32_FIND_DATA и скорее всего еще в куче менее известных структур.

O>>чтобы это ограничение обойти, программа должна во-первых использовать wide-версии системных АПИ,

O>>а во-вторых делать путь с префиксом \\?\.
BFE>Это должно делаться автоматически: если префикс отсутствует, то добавляем втихую и работаем.
BFE>Да. Вот я и спрашиваю: есть такая сборка gcc, которая это умеет?
Опенсорс же — сделай если надо. Но скорее всего дело не в самом гцц, а каком нить mingw с которым он сам собран, а сам gcc пользует посиксовый open().

O>>а если нет — НЕФИГ ДЕЛАТЬ ТАКИЕ ПУТИ

BFE>У меня в проекте вложенность каких-то 10 уровней => на длину каталога остаётся каких-то 26 символов. Как при этом работать, если только каталог для .o файлов называется debug-build-gcc-arm-10.3-2021.07-mingw-w64-i686-arm-none-linux-gnueabihf ?
Кхе, вот сделай base64(md5(этой строки)) и будет норм, и информативности не убудет, ведь явно ты тут ниче не читаешь
Как много веселых ребят, и все делают велосипед...
Отредактировано 08.09.2021 17:38 ononim . Предыдущая версия . Еще …
Отредактировано 08.09.2021 17:36 ononim . Предыдущая версия .
Re: gcc.exe и путь длиной в 260 символов
От: VladCore  
Дата: 10.09.21 20:43
Оценка:
Здравствуйте, B0FEE664, Вы писали:

BFE>Я снова уткнулся в искусственное ограничение gcc для Windows:


>>gcc --version

BFE>gcc (i686-posix-dwarf-rev0, Built by MinGW-W64 project) 5.3.0
BFE>Copyright (C) 2015 Free Software Foundation, Inc.

если меня не изменяет склероз то в винде лимит 260 убрали не сразу в 10ке, а немного сильно позже 2015го года.

соответсвенно gcc надо пробовать посвежее чем 2015го года скорее всего в нем MAX_PATH захардкожен 260. оно конечно может не скомпилится в последней версии gcc, так что придется перебирать разные версии. Пробовал?

я тут написал очевидную мысль потому что мне стало интересно можно ли сборать порт линуксовой утилиты с поддержкой и длинных путей в 10ке и коротких в 7ке.
вот для примера вопрос про порт fio под винду https://bsdio.com/fio/ там не так как в MinGW или cygwin потому что на выходе всего один екзешник fio.exe. c другой стороны для сборки вот тут пишут надо cygwin. https://github.com/axboe/fio
Отредактировано 10.09.2021 20:47 VladCore . Предыдущая версия . Еще …
Отредактировано 10.09.2021 20:44 VladCore . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.