Файл, связанный вручную, не существует при попытке его запуска, но в противном случае он существует [дубликат] ⇐ Linux
Файл, связанный вручную, не существует при попытке его запуска, но в противном случае он существует [дубликат]
Я возился с каким-то ассемблером и пытаюсь собрать его с помощью nasm и связать с ld на своей машине с Ubuntu. Это мой код
EXTERN помещает РАЗДЕЛ .data hello: db "Привет, мир!\0" РАЗДЕЛ .текст глобальный _start _начинать: ; ставит (привет) мов рди, слово привет колл-путы ; выход(0) хор рди, рди Мов Еакс, 60 системный вызов Когда я компилирую его с помощью
nasm helloworld.asm ld -lc -o приветмир helloworld.o обе команды возвращают статус завершения 0 и файл существует. Но когда я пытаюсь запустить файл, он внезапно больше не существует, или, по крайней мере, так мне говорит моя оболочка.
$ ls helloworld -alh -rwxrwxr-x 1 группа пользователей 14K 28 октября 10:44 helloworld $ ./приветмир sh: 4: ./helloworld: не найдено $ файл helloworld helloworld: 64-битный исполняемый файл ELF LSB, x86-64, версия 1 (SYSV), динамически подключаемый, интерпретатор /lib/ld64.so.1, не удаленный Я пробовал sh, bash и zsh. Я также пытался запустить с помощью exec. Когда я открываю его с помощью GDB, я могу дизассемблировать _start, и он показывает правильные инструкции, но когда я запускаю, он просто говорит, что файл снова не существует. Когда я загружаю файл в каттер, он показывает правильную дизассемблирование, но когда я пытаюсь запустить его с помощью отладчика, он просто зависает.
Более того, когда я только что вернул 0 и там не было вставок, я связал без флага -lc, и тогда все заработало как ожидалось.
Что происходит?
Я возился с каким-то ассемблером и пытаюсь собрать его с помощью nasm и связать с ld на своей машине с Ubuntu. Это мой код
EXTERN помещает РАЗДЕЛ .data hello: db "Привет, мир!\0" РАЗДЕЛ .текст глобальный _start _начинать: ; ставит (привет) мов рди, слово привет колл-путы ; выход(0) хор рди, рди Мов Еакс, 60 системный вызов Когда я компилирую его с помощью
nasm helloworld.asm ld -lc -o приветмир helloworld.o обе команды возвращают статус завершения 0 и файл существует. Но когда я пытаюсь запустить файл, он внезапно больше не существует, или, по крайней мере, так мне говорит моя оболочка.
$ ls helloworld -alh -rwxrwxr-x 1 группа пользователей 14K 28 октября 10:44 helloworld $ ./приветмир sh: 4: ./helloworld: не найдено $ файл helloworld helloworld: 64-битный исполняемый файл ELF LSB, x86-64, версия 1 (SYSV), динамически подключаемый, интерпретатор /lib/ld64.so.1, не удаленный Я пробовал sh, bash и zsh. Я также пытался запустить с помощью exec. Когда я открываю его с помощью GDB, я могу дизассемблировать _start, и он показывает правильные инструкции, но когда я запускаю, он просто говорит, что файл снова не существует. Когда я загружаю файл в каттер, он показывает правильную дизассемблирование, но когда я пытаюсь запустить его с помощью отладчика, он просто зависает.
Более того, когда я только что вернул 0 и там не было вставок, я связал без флага -lc, и тогда все заработало как ожидалось.
Что происходит?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как назвать шаблонную функцию, если она существует, и что -то еще в противном случае?
Anonymous » » в форуме C++ - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Статическое утверждение, если значение постоянно, в противном случае не [дубликат]
Anonymous » » в форуме C++ - 0 Ответы
- 87 Просмотры
-
Последнее сообщение Anonymous
-