LINUX.ORG.RU

[mingw32] Собираются неправильные экзешники


0

0

Пытаюсь собрать одну достаточно древнюю библиотеку. Он для работы требует еще одну, не менее древнюю: libsigc++-1.2.7. Все компилируется под линуксом. Для линукса все собирается и работает нормально, а вот когда собираю с mingw, то начинаются проблемы. Сама сборка проходит более-менее гладко, но при попытке запустить примеры скажем в wine или в windows ничего не происходит. Т.е. не запускаются, ошибок не выводят. Если же попробовать запускать те, что лежат в ./examples/.libs/, то они запускаются нормально. Обнаружил, что запускающиеся экзешники в зависимостях имеют бибилиотеку libsigc-1.2-5.dll. Полазил в недрах autotools'a, выяснил, что скажем signals.exe собирается не из прямо из signals.сс, как можно было подумать, а из ./libs/lt-siglals.exe.c. Но вот зачем это делается, и как это победить - так и не придумал. Может сталкивался кто с подобным?

P.S. Проверял и на последней версии - 2.2.6 - все тоже самое.


а если запустить с WINEDEBUG ?

splinter ★★★★★
()

> Т.е. не запускаются, ошибок не выводят.

Вам запретили использовать отладчик? Запрещено смотреть в код? Какие еще есть ограничения?

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Ограничений нет. Как и смысла. При одной команде make собирается 2 exe-файла. Один в каталоге с исходником и один в каталоге .libs. Тот что в .libs работает нормально, а вот другой - нет. Так что тут дело не исходном коде, а в его сборке. Можно было бы взять правильный и не заморачиваться, но интересно, почему так происходит.

Хотя вроде бы нарыл что-то похожее. Вот тут говорят что дело в libtool. И в debian'е вроде даже какие-то патчи на эту тему есть. Попробую еще с ними.

ghoust
() автор топика
Ответ на: комментарий от ghoust

> Один в каталоге с исходником и один в каталоге .libs. Тот что в .libs работает нормально, а вот другой - нет.

Один слинкован статический, второй динамически. А либы нет по путям, вот он и отваливается.

andreyu ★★★★★
()
Ответ на: комментарий от andreyu

Все оказалось еще хитрее. hello_world.exe, например, вызывает внутри себя .libs/hello_world.exe, и по сути верхний бинарник является лишь заглушкой.

ghoust
() автор топика
Ответ на: комментарий от ghoust

> Все оказалось еще хитрее. hello_world.exe, например, вызывает внутри себя .libs/hello_world.exe, и по сути верхний бинарник является лишь заглушкой.

Странно, зачем такое понадобилось делать, или они так симлинки эмулируют?)

Alesh
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.