Я довольно новичок в Ubuntu, и недавно я создал файл .o, набрав терминал:
g++ -Wall -std=c++11 -c average.cpp -o average.o
Однако, когда я пытался выполнить файл .o, я получил это error:
bash: ./average: No such file or directory
, хотя у меня явно есть файл. Поэтому я решил ввести file average.o, что позволило мне это: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped.
Является ли проблема тем фактом, что она должна быть 32-битным исполняемым файлом, и если да, то как я могу изменить его на 32-битный исполняемый файл?
Edit: Так что я могу создать average, но когда я попытаюсь запустить его, я бы получил эту ошибку:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_M_construct null not valid
Aborted (core dumped)
Edit 2: я смог исправить дамп ядра и дать разрешение на запуск моего файла, но теперь я получаю новую ошибку:
bash: ./average: cannot execute binary file: Exec format error.
Когда я сделал file averge, я получил это:
average: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped.
вы должны проверить права доступа к файлам и убедиться, что разрешения установлены так, чтобы файл был выполнен как программа также при попытке выполнить файл, который вам нужно поставить расширение .o, как по опыту, это единственный способ я смог выполнить файлы из командной строки
g++ -Wall -std=c++11 -c average.cpp -o average.o
Создает файл average.o, а не average, поэтому вы получаете ошибку no such file
Первый файл ящика average, а затем попытайтесь выполнить его. [!d1 ]
Попробуйте следующее:
g++ -Wall -std=c++11 average.cpp -o average
И затем дайте разрешение:
chmod +x average
, затем выполните его
./average