LINUX.ORG.RU

Запуск исполняемых файлов.

 , ,


0

3

Сразу укажу, что я полнейший нуб. Учусь пользоваться линуксом. Сейчас стоит fedora 22. Не запускаются скомпилированные исполняемые файлы. Компилирую СИшные файлики через ком строку. «gcc -c file.c -o file.o» и «gcc file.o -o file». После этих действий выдает ошибку при запуске через sh «не могу запустить бинарный файл.» Не хочет запускать ни file.o, ни file. Переустанавливал bash и gcc через ком строку с помощью dnf reinstall, не помогло. Мне интересен любой способ решения этой проблемы, который я буду способен в кратчайшие сроки освоить.

Предлагаешь нам самим догадаться, как именно ты запускаешь этот файл?

Deleted
()
Ответ на: комментарий от kostik87

[root@localhost программы]# gcc -c pr1.c -o pr1.o [root@localhost программы]# gcc pr1.o -o pr1 [root@localhost программы]# sh pr1 pr1: pr1: не могу запустить бинарный файл [root@localhost программы]# chmod +x pr1 [root@localhost программы]# sh pr1 pr1: pr1: не могу запустить бинарный файл [root@localhost программы]# ls pr1 pr1.c pr1.o адрес [root@localhost программы]# chmod a=x pr1.o [root@localhost программы]# pr1.o bash: pr1.o: команда не найдена... ^C [root@localhost программы]# sh pr1.o pr1.o: pr1.o: не могу запустить бинарный файл [root@localhost программы]# ./pr1.o bash: ./pr1.o: cannot execute binary file: Ошибка формата выполняемого файла [root@localhost программы]# ./pr1 указатель не определен

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

[root@localhost программы]# chmod +x pr1.o

[root@localhost программы]# ./pr1.o

bash: ./pr1.o: cannot execute binary file: Ошибка формата выполняемого файла

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

Да, вообще все мной собранные проги, которые даже раньше работали, не запускаются.

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

Я выложил коментарии. Посмотри, пожалуйста.

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

Некоторое время назад все работало. Потом линукс «рассыпался». Все проги из автозапуска слетели. Даже граф интерфейс сам не загружается. Ввожу вручную при запуске «startx»

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

Я установил все обновления в yum'е, какие нашел.

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

Какие еще системные утилиты могут участвовать в процессе запуска и компиляции? Я подумал, что быть может они не корректно выполняются. Переустанавливал bash и gcc

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

[root@localhost программы]# ./pr1.o

root

you do it wrong!

Может, у тебя там в опциях монтирования noexec какой-нить стоит...

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

Вот же здесь у тебя всё работало:

[root@localhost программы]# gcc -c pr1.c -o pr1.o [root@localhost программы]# gcc pr1.o -o pr1 
[root@localhost программы]# sh pr1 pr1: pr1: не могу запустить бинарный файл 
[root@localhost программы]# chmod +x pr1 
[root@localhost программы]# sh pr1 pr1: pr1: не могу запустить бинарный файл 
[root@localhost программы]# ls pr1 pr1.c pr1.o адрес
[root@localhost программы]# chmod a=x pr1.o 
[root@localhost программы]# pr1.o bash: pr1.o: команда не найдена... ^C 
[root@localhost программы]# sh pr1.o pr1.o: pr1.o: не могу запустить бинарный файл 
[root@localhost программы]# ./pr1.o bash: ./pr1.o: cannot execute binary file: Ошибка формата выполняемого файла
[root@localhost программы]# ./pr1 указатель не определен
последняя строка.

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

У меня всё работает:

#include <stdio.h>
int main(){
int* p = NULL;
if(p){
printf("%p",&p);
}
else{
printf("указатель не определен\n");
}
return 0;
}
$ gcc 1.c
$ ./a.out 
указатель не определен

kostik87 ★★★★★
()
Последнее исправление: kostik87 (всего исправлений: 1)
Ответ на: комментарий от Sahas

Где это посмотреть? Пока что штудирую одну англоязычную статью по этой теме.

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

[root@localhost программы]# ./pr1.o bash: ./pr1.o: cannot execute binary file: Ошибка формата выполняемого файла

Этот файл также не запускается так. Раньше эти файлики запускались вроде. Теперь, конечно, проги писать могу, но было бы интересно разобраться с этой темой окончательно.

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

Потому, что через sh ты вызываешь командный интерпретатор и на вход ему подаёшь не код скрипта, а бинарный файл.

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

Да, так тоже работает. Спасибо

[root@localhost программы]# gcc pr1.c

[root@localhost программы]# ./pr1.out

a.out pr1 pr1.c pr1.o адрес

[root@localhost программы]# ./a.out

указатель не определен

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

А ты не в курсе есть ли какие-нибудь мануалы по линуксу и книги по этой теме? Я только «карманный справочник по командам» Дж.Баррета знаю, лежит в pdf у меня.

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

Этот файл также не запускается так. Раньше эти файлики запускались вроде.

Нет, раньше они тоже не запускались. Это не исполняемые файлы.

AnDoR ★★★★★
()

Какой ужас и комментаторы ужас

gcc -c !!! file.o !!! Ты понял что это за файл file.o ? Зачем ты его пытаешься запускать?

sh file — sh ожидает в file скрипт на *sh языке.

anonymous
()
Ответ на: комментарий от vikbrdin

А ты не в курсе есть ли какие-нибудь мануалы по линуксу и книги по этой теме? Я только «карманный справочник по командам» Дж.Баррета знаю, лежит в pdf у меня.

Для новичка в линуксе, всё сильно привязано к дистрибуриву. Сходи на сайт своего дистрибутива и поищи ссылки на мануалы там. А когда уже обрастёшь шерстью, такие элементарные вопросы и не возникнут.

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

А ты не в курсе есть ли какие-нибудь мануалы по линуксу

А вообще это больше на троллинг похоже. Лет 15 назад, такой вопрос может и был бы уместен.

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

Понял. Я перепутал.Помню только лишь то, что он вроде называется объектным.

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

Спасибо, что подсказали. А то я как новичок так же и не знаю, где про такие вещи читать. Там все на инглише, да? Ну буду, значит, в этом случае учить английский, а пока в случае срочных вопросов иногда буду заглядывать на форум. Пока новых с того момента не появлялось, так что сильно «флудить» не буду.

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

Не знаю, честно говоря, иногда и как вопросы формулировать, потому что не сильно хорошо владею терминологией.

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