shmuz / LuaFAR

A library for writing Far Manager plugins in Lua.
11 stars 3 forks source link

src\luaplug.mak #4

Closed shmuz closed 12 years ago

shmuz commented 12 years ago

GCC cannot find lua5.1.dll when making helloworld.dll. It used to work only due to environment variable LIBRARY_PATH being set. Probably, this is the case for all make files that include src\luaplug.mak.

(Reported by Aidar Rakhmatullin).

VictorVG commented 12 years ago

GCC и не должен линковать бинарную DLL, да и любой другой компилятор не станет этого делать - это уже готовый исполняемый модуль, а линковка это процесс настройки внутренних ссылок в модуле позволяющий его загрузить в ОЗУ и выполнить находящийся в нём код. ld умеет собирать только .a, .dll.a, .o и .obj файлы.

Задача решается не сложно - или нужные для сборки .lib должны лежать в прописанных в мэйке путях, или если она меняется достаточно редко, то можно просто положить её в подкаталог ./lib компилятора где ld (gcc линкер) её и отыщет по имени, но в подкаталог её лучше не класть - есть не нулевая вероятность ошибки при линковке. Сам таким часто пользуюсь приёмом.

shmuz commented 12 years ago

GCC и не должен линковать бинарную DLL, да и любой другой компилятор не станет этого делать - это уже готовый исполняемый модуль

GCC (имеется в виду не компилятор, а управляющая программа) умеет при линковке использовать DLL вместо LIB. Если посмотреть в мейк-файлы LuaFAR и LuaFAR-плагинов, то можно увидеть, что LIB-файлы там вообще не используются.

VictorVG commented 12 years ago

Тогда приношу свои извинения за ито, что ошибся в предпосылках считая gcc копилятором. Управляющуюю программу с таким именем я не встречал. Тут наверное стоит представить для себя что это за инструмент и где может пригодится.

shmuz commented 12 years ago

Не знаю, с иронией вы пишете, или нет, но GCC - это именно та программа, которую многие считают (или называют для простоты) компилятором. GCC расшифровывается как GNU Compiler Collection (набор компиляторов GNU) и является управляющей программой, которая по мере надобности вызывает тот или иной компилятор (C, C++, FORTRAN и т.д.), а также препроцессор, компоновщик и т.д.

VictorVG commented 12 years ago

Нет, просто я подумал что есть ещё одна программа с похожим именем (мне уже приходилось сталкиваться с такими случаями - например IBM очень любить называть свои диагностические программы для разных по классу устройств программы одинаковыми именами, и понять с чем в данный момент имеешь дело иной раз довольно сложно - часто эти программы не имеют ничего что позволяет их отличить кроме п/н на своём носителе - мол смотри что это такое в нашем каталоге тестов (я для интереса как то посмотрел - для 53 абсолютно разных устройств утилита тестирования имееет одно название DIAG и даже её размер примерно одинаков - десяток мегабайт плюс - минус байт, зато различные режимы вызова и их ключи) и потому я подумал что опять на подобный случай нарвался.

shmuz commented 12 years ago

Fixed by adding a definition for MYLDFLAGS to config.mak.