LINUX.ORG.RU

./a.out: No such file or directory

 


0

1

Есть проект, который надо собрать и запустить.

Была установлена ubuntu 14.04 i686, поставлены нужные либы, сделано qmake project.pro && make. Было несколько ошибок(надо было добавить в пару файлов include и добавить в Makefile в либы -lX11), но после этого проект собрался.

Теперь при попытке его запустить получаю No such file or directory, хотя файл есть и file показывает что это ELF 32-bit LSB executable.

Можете подсказать направление, куда копать?


ldd ./a.out

Сообщение об ошибке вводит в заблуждение, это не этот файл оно найти не может, а какую-то зависимость. Команда выше должна показать, что не находится.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek
$ ldd ./a.out 
        linux-gate.so.1 =>  (0xb770d000)
        libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xb75bf000)
        libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb759d000)
        libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7597000)
        libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb73e8000)
        libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xb73e4000)
        libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xb73dd000)
        /usr/lib/libc.so.1 => /lib/ld-linux.so.2 (0x80096000)

Вроде тут все нормально. Никаких not found нет.
aiive
() автор топика
Ответ на: комментарий от Twissel

chmod u+x

Это было выполнено в первую очередь -rwxrwxr-x 1 aiive aiive 1,2K марта 25 23:34 a.out

aiive
() автор топика
Ответ на: комментарий от xaizek
$ readelf -a ./a.out | grep interpreter
[Requesting program interpreter: /usr/lib/libc.so.1]
$ ls /usr/lib/libc.so.1
ls: cannot access /usr/lib/libc.so.1: No such file or directory

теперь надо понять, как это поправить

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

А простейший hello-world собирается и запускается нормально? Если этот проект сам не указывает интерпретатор, то системный тулчейн может быть как-то странно поломан.

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

Это если было бы «Permission denied» при попытке запуска.

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

системный тулчейн может быть как-то странно поломан.

Вряд ли. Чистая установка ubuntu 14.04.5 + build-essential + несколько lib*-dev пакетов.

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

По строчке «/usr/lib/libc.so.1» гуглится https://sourceware.org/ml/binutils/2008-06/msg00296.html, где у вопрошающего был аналогичный глюк при вызове ld вручную. Метод решения — линковать с помощью gcc, а не ld.

То есть, вполне может быть так, что способ сборки работал на старой версии ld, но на новой уже не работает.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Ответ на: комментарий от i-rinat
g++ -Wl,-O1 -Wl,-rpath,/home/aiive/tmp/src/qtsingleapplication-2.6_1-opensource/lib -o modeware main.o mainwindow.o setupparser.o groupobject.o functionobject.o categoryobject.o applicationobject.o setup_common.o identifiedpushbutton.o categorylistmodel.o functionlistmodel.o keypressparser.o mouseobject.o mousebuttonobject.o addfunctiondialog.o editfunctiondialog.o editcategorydialog.o keypress_common.o buttonbindingobject.o keyobject.o mousewidget.o mousehardware.o editapplicationdialog.o mydialogs_common.o addapplicationdialog.o hardwarethread.o setup_objects_common.o mapwidget.o copyapplicationdialog.o simplescreen.o applicationlistmodel.o autoswitchdetailsdialog.o grouporappwidget.o mytoolbutton.o mylistview.o functiondelegate.o statisticobject.o statisticsdialog.o statisticsalldialog.o copyfunctiondialog.o copycategorydialog.o statisticsmodel.o mystatisticstable.o statisticsallmodel.o myallstatisticstable.o macrofunctionsdialog.o mysingleapplication.o moc_mainwindow.o moc_identifiedpushbutton.o moc_categorylistmodel.o moc_functionlistmodel.o moc_mouseobject.o moc_addfunctiondialog.o moc_editfunctiondialog.o moc_editcategorydialog.o moc_mousewidget.o moc_editapplicationdialog.o moc_addapplicationdialog.o moc_mapwidget.o moc_copyapplicationdialog.o moc_simplescreen.o moc_applicationlistmodel.o moc_autoswitchdetailsdialog.o moc_grouporappwidget.o moc_mytoolbutton.o moc_mylistview.o moc_functiondelegate.o moc_statisticsdialog.o moc_statisticsalldialog.o moc_copyfunctiondialog.o moc_copycategorydialog.o moc_statisticsmodel.o moc_mystatisticstable.o moc_statisticsallmodel.o moc_myallstatisticstable.o moc_macrofunctionsdialog.o moc_mysingleapplication.o qrc_warmouse.o    -L/usr/lib/i386-linux-gnu -L/home/aiive/tmp/src/qtsingleapplication-2.6_1-opensource/lib -lQtSolutions_SingleApplication-2.6 -lX11 -lcairo -lXtst -lQtSvg -lQtXml -lQtGui -lQtNetwork -lQtCore -lpthread 

линкуется оно так, как я понимаю, то есть с помощью g++

aiive
() автор топика

Внезапно, удаление всего и повторное повторение шагов дало рабочий бинарник с именем modeware, а a.out больше не появляется.

Хотя один фиг падает с сегофолтом, но это уже другая проблема.

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

Выглядит нормально, правда есть пара огрехов. Первый — про -Wl,-O1 написано, что он сейчас имеет смысл только при создании динамических библиотек. Второй — линкование с pthread через -lpthread. Вместо этого нужно использовать -pthread. Хотя для стадии линковки разницы нет, есть шанс, что при компиляция не используется -pthread, а это потенциально может дать случайные баги при использовании libc из нескольких потоков.

Кстати, если вот эту команду запустить руками, бинарник тоже получается с неправильно указанным interpreter?

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

Кстати, если вот эту команду запустить руками, бинарник тоже получается с неправильно указанным interpreter?

Я вчера в процессе экспериментов полностью повторил процесс сборки и получил, внезапно, нормальный бинарник. Воспроизвести ошибку при которой получается a.out не получается.

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