powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Linux64 - глюки при линковке
10 сообщений из 10, страница 1 из 1
Linux64 - глюки при линковке
    #39952252
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Никто не встречался с таким глюком:

Компилирую приложение под Linux64 - все OK.
Добавляю новый каталог в пути поиска (пустой) - ошибка при линковке:

[DCC Error] E2597 C:\BDX103\bin\ld-linux.exe: fatal error: no input files
[DCC Fatal Error] F2588 Linker error code: 1 ($00000001)

(Ошибки могут быть разные)

Такое впечатление, что там ограничение на длину командной строки для линкера, а учитывая, что Delphi автоматом туда запихывает кучу "левых" каталогов, на нужные мне - уже не остается :(

Как бы обойти? Ждать 10.4?
...
Рейтинг: 0 / 0
Linux64 - глюки при линковке
    #39952654
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Rusov,

проверь в Output - какая там на самом деле командная строка
...
Рейтинг: 0 / 0
Linux64 - глюки при линковке
    #39952659
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какая - длинная.

Так - еще компилируется
c:\bdx103\bin\dcclinux64.exe -$O- -LUTXSys --no-config -B -Q -TX.so -AGenerics.Collections=System.Generics.Collections;Generics.Defaults=System.Generics.Defaults -DDEBUG -ES:\WrkLinux -IS:\WrkLinux;\Inc;\Libs;\RPC;\Auth;\Events;\Defense;\WrkDcu\Linux64;S:\0\Lib\20.0\Debug;c:\bdx103\lib\Linux64\release;S:\0\Imports;c:\bdx103\Imports;S:\0\Dcp\Linux64;c:\bdx103\include;c:\bdx103\redist\Linux64;S:\0\Bpl\Linux64 -LES:\0\Bpl\Linux64 -LNS:\0\Dcp\Linux64 -NUS:\WrkDcu\TXAuth\Linux64\Debug -NSSystem;System.Win;WinApi; -OS:\WrkLinux;\Inc;\Libs;\RPC;\Auth;\Events;\Defense;\WrkDcu\Linux64;S:\0\Lib\20.0\Debug;c:\bdx103\lib\Linux64\release;S:\0\Imports;c:\bdx103\Imports;S:\0\Dcp\Linux64;c:\bdx103\include;c:\bdx103\redist\Linux64;S:\0\Bpl\Linux64 -RS:\WrkLinux;\Inc;\Libs;\RPC;\Auth;\Events;\Defense;\WrkDcu\Linux64;S:\0\Lib\20.0\Debug;c:\bdx103\lib\Linux64\release;S:\0\Imports;c:\bdx103\Imports;S:\0\Dcp\Linux64;c:\bdx103\include;c:\bdx103\redist\Linux64;S:\0\Bpl\Linux64 -US:\WrkLinux;\Inc;\Libs;\RPC;\Auth;\Events;\Defense;\WrkDcu\Linux64;S:\0\Lib\20.0\Debug;c:\bdx103\lib\Linux64\release;S:\0\Imports;c:\bdx103\Imports;S:\0\Dcp\Linux64;c:\bdx103\include;c:\bdx103\redist\Linux64;S:\0\Bpl\Linux64 --syslibroot:C:\BDX103\SDK\ubuntu18.04.sdk --libpath:C:\BDX103\SDK\ubuntu18.04.sdk\usr\lib\gcc\x86_64-linux-gnu\7;C:\BDX103\SDK\ubuntu18.04.sdk\usr\lib\x86_64-linux-gnu;C:\BDX103\SDK\ubuntu18.04.sdk\lib\x86_64-linux-gnu -V -VN -NHS:\0\hpp\Linux64 -NOS:\WrkDcu\TXAuth\Linux64\Debug --drc TXAuth.dpr

Done building project "TXAuth.dproj".


А так - уже нет
c:\bdx103\bin\dcclinux64.exe -$O- -LUTXSys --no-config -B -Q -TX.so -AGenerics.Collections=System.Generics.Collections;Generics.Defaults=System.Generics.Defaults -DDEBUG -ES:\WrkLinux -IS:\WrkLinux;S:\Inc;S:\Libs;S:\RPC;S:\Auth;S:\Events;S:\Defense;S:\WrkDcu\Linux64;S:\0\Lib\20.0\Debug;c:\bdx103\lib\Linux64\release;S:\0\Imports;c:\bdx103\Imports;S:\0\Dcp\Linux64;c:\bdx103\include;c:\bdx103\redist\Linux64;S:\0\Bpl\Linux64 -LES:\0\Bpl\Linux64 -LNS:\0\Dcp\Linux64 -NUS:\WrkDcu\TXAuth\Linux64\Debug -NSSystem;System.Win;WinApi; -OS:\WrkLinux;S:\Inc;S:\Libs;S:\RPC;S:\Auth;S:\Events;S:\Defense;S:\WrkDcu\Linux64;S:\0\Lib\20.0\Debug;c:\bdx103\lib\Linux64\release;S:\0\Imports;c:\bdx103\Imports;S:\0\Dcp\Linux64;c:\bdx103\include;c:\bdx103\redist\Linux64;S:\0\Bpl\Linux64 -RS:\WrkLinux;S:\Inc;S:\Libs;S:\RPC;S:\Auth;S:\Events;S:\Defense;S:\WrkDcu\Linux64;S:\0\Lib\20.0\Debug;c:\bdx103\lib\Linux64\release;S:\0\Imports;c:\bdx103\Imports;S:\0\Dcp\Linux64;c:\bdx103\include;c:\bdx103\redist\Linux64;S:\0\Bpl\Linux64 -US:\WrkLinux;S:\Inc;S:\Libs;S:\RPC;S:\Auth;S:\Events;S:\Defense;S:\WrkDcu\Linux64;S:\0\Lib\20.0\Debug;c:\bdx103\lib\Linux64\release;S:\0\Imports;c:\bdx103\Imports;S:\0\Dcp\Linux64;c:\bdx103\include;c:\bdx103\redist\Linux64;S:\0\Bpl\Linux64 --syslibroot:C:\BDX103\SDK\ubuntu18.04.sdk --libpath:C:\BDX103\SDK\ubuntu18.04.sdk\usr\lib\gcc\x86_64-linux-gnu\7;C:\BDX103\SDK\ubuntu18.04.sdk\usr\lib\x86_64-linux-gnu;C:\BDX103\SDK\ubuntu18.04.sdk\lib\x86_64-linux-gnu -V -VN -NHS:\0\hpp\Linux64 -NOS:\WrkDcu\TXAuth\Linux64\Debug --drc TXAuth.dpr

MSBUILD : error E2597: E2597 C:\BDX103\bin\ld-linux.exe: fatal error: no input files
c:\bdx103\Bin\CodeGear.Delphi.Targets(402,5): error F2588: F2588 Linker error code: 1 ($00000001)


В первом случае я чуток cэкономил убрав буквы диска: S:\Inc;S:\Libs;... -> \Inc;\Libs;...

Причем это после того как я дохрена шаманил с путями. Изначально она гораздо длиннее была (С:\Users\Max\Documents\...)
...
Рейтинг: 0 / 0
Linux64 - глюки при линковке
    #39952680
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Rusov,

По своему опыту скажу, что длина пусти на компилятор не влияет.
Вот моя строка компиляции, почти в 2 раза длинее:
c:\program files (x86)\embarcadero\studio\20.0\bin\dcclinux64.exe -$O- --no-config -M -Q -AGenerics.Collections=System.Generics.Collections;Generics.Defaults=System.Generics.Defaults -DDEBUG -E.\Linux64\Debug -I"c:\program files (x86)\embarcadero\studio\20.0\lib\Linux64\debug";"c:\program files (x86)\embarcadero\studio\20.0\lib\Linux64\release";C:\Users\user1\Documents\Embarcadero\Studio\20.0\Imports;"c:\program files (x86)\embarcadero\studio\20.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp\Linux64;"c:\program files (x86)\embarcadero\studio\20.0\include";"c:\program files (x86)\embarcadero\studio\20.0\redist\Linux64";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\Linux64 -LEC:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\Linux64 -LNC:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp\Linux64 -NU.\Linux64\Debug -NSSystem;Xml;Data;Datasnap;Web;Soap; -O"c:\program files (x86)\embarcadero\studio\20.0\lib\Linux64\release";C:\Users\user1\Documents\Embarcadero\Studio\20.0\Imports;"c:\program files (x86)\embarcadero\studio\20.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp\Linux64;"c:\program files (x86)\embarcadero\studio\20.0\include";"c:\program files (x86)\embarcadero\studio\20.0\redist\Linux64";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\Linux64 -R"c:\program files (x86)\embarcadero\studio\20.0\lib\Linux64\release";C:\Users\user1\Documents\Embarcadero\Studio\20.0\Imports;"c:\program files (x86)\embarcadero\studio\20.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp\Linux64;"c:\program files (x86)\embarcadero\studio\20.0\include";"c:\program files (x86)\embarcadero\studio\20.0\redist\Linux64";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\Linux64 -U"c:\program files (x86)\embarcadero\studio\20.0\lib\Linux64\debug";"c:\program files (x86)\embarcadero\studio\20.0\lib\Linux64\release";C:\Users\user1\Documents\Embarcadero\Studio\20.0\Imports;"c:\program files (x86)\embarcadero\studio\20.0\Imports";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Dcp\Linux64;"c:\program files (x86)\embarcadero\studio\20.0\include";"c:\program files (x86)\embarcadero\studio\20.0\redist\Linux64";C:\Users\Public\Documents\Embarcadero\Studio\20.0\Bpl\Linux64 --syslibroot:C:\Users\user1\Documents\Embarcadero\Studio\SDKs\linuxmint19.3.sdk --libpath:C:\Users\user1\Documents\Embarcadero\Studio\SDKs\linuxmint19.3.sdk\usr\lib\gcc\x86_64-linux-gnu\7;C:\Users\user1\Documents\Embarcadero\Studio\SDKs\linuxmint19.3.sdk\usr\lib\x86_64-linux-gnu;C:\Users\user1\Documents\Embarcadero\Studio\SDKs\linuxmint19.3.sdk\lib\x86_64-linux-gnu;C:\Users\user1\Documents\Embarcadero\Studio\SDKs\linuxmint19.3.sdk\lib64 -V -VN -NHC:\Users\Public\Documents\Embarcadero\Studio\20.0\hpp\Linux64 -NO.\Linux64\Debug LinuxTest.dpr


Но я собираю в Win10
а у тебя какая ОС?

Или запускай ProcMon и смотри куда лезет компилятор

а может ты сам запускаешь компилятор из командной строки и не задал текущий каталог для файла проекта?
...
Рейтинг: 0 / 0
Linux64 - глюки при линковке
    #39952725
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, это из среды. Из командной строки - были те же проблемы, но там легко все ненужные каталоги убрать. Батником у меня все компилируется. ОС - 10-ка. Да, странно конечно. Возможно, у меня Delphi какая-то левая...
...
Рейтинг: 0 / 0
Linux64 - глюки при линковке
    #39952955
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cobalt747
Maxim Rusov,
запускай ProcMon и смотри куда лезет компилятор
...
Рейтинг: 0 / 0
Linux64 - глюки при линковке
    #39953396
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Rusov,

Да, есть какая-то бага в компиляторе и линковщике.

Со стороны компилятора, проблема заключается в обрезании (умышленно или это такая бага - не известно) "слишком длинной" (чуть более 1024 символа), с точки зрения компилятора, командной строки, которой он будет запускать линковщик.
В итоге, при запуске линковшик получает обрезанную командую строку, и падает или нет в зависмости на каком месте она обрублена (путь может оказаться обрезанным в самом интересном месте и вести линковщик к несуществующему каталогу).
Со стороны линковщика, также есть какая-то проблема или лимит, в результате чего он "видит" командную строку только до какого-то размера.

Причем, командная строка там и не может быть короткой, т.к. через нее передаются не только все возможные пути, но и все имена экспортируемых функций собираемого модуля.

Мы для обхода этих проблем сделали себе консольное приложение - врапер линковщика, который запускаем вместо родного ld-linux.exe, путем указания ключа командной строки --linker в консольном компиляторе dcclinux64.exe.
Этот врапер линковщика занимается тем, что:
1) проверяет не обрезана ли уже командная строка которую передал компилятор - обычно командная строка запуска линкера заканчивается "$ORIGIN", следовательно если ее там нет, то строка уже обрезана и делать что-то уже поздно
2) как может укорачивает командную строку, путем замены абсолютных путей к каталогам на относительные
3) запускает родной ld-linux.exe с укороченой командной строкой

До изготовления воспроизводимого примера для создания тикета в трекере Embarcodero, руки пока не дошли. Если у вас получится сделать воспроизводимый пример - пишите номер, я добавлю свои пять копеек.
...
Рейтинг: 0 / 0
Linux64 - глюки при линковке
    #39953397
rashid.abzalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim RusovЖдать 10.4?

Эта бага есть с самой первой версии компилятора под linux, и на сколько я вижу из трекера, они о ней ничего не знают. Поэтому простое ожидание 10.4 мало, что изменит.
...
Рейтинг: 0 / 0
Linux64 - глюки при линковке
    #39953777
Фотография Maxim Rusov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rashid.abzalov,

Спасибо за информацию, по крайней мере я теперь буду знать, что это не у меня руки не из того места растут. Сделать воспроизводимый пример проблематично, т.к. все это зависит от имен каталогов куда установлена Delphi и все остальное...
...
Рейтинг: 0 / 0
Linux64 - глюки при линковке
    #39953829
Vizit0r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Rusov
rashid.abzalov,

Спасибо за информацию, по крайней мере я теперь буду знать, что это не у меня руки не из того места растут. Сделать воспроизводимый пример проблематично, т.к. все это зависит от имен каталогов куда установлена Delphi и все остальное...


Так ты им скинь саму проблемную строку компиляции, а они уже будут разбираться дальше сами. Главное чтобы воспроизводилось каждый раз.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Linux64 - глюки при линковке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]