Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.10.2021, 14:05   #1
yurchik84
Новичок
Джуниор
 
Регистрация: 14.09.2021
Сообщений: 3
По умолчанию NASM и gcc. Как исправить ошибку в программе?

Компилируется, но не компонуется программа на языке ассемблера.
Вот код:
Код:
; -----------------------------------------------------------------
; Writes "Hola, mundo" to the console using a C library. Runs on
; Linux.
;
;	nasm -felf64 hola.asm && gcc hola.o && ./a.out
; ------------------------------------------------------------------

	global main
	extern puts

	section .text
main:				; This is called by the C library
; startup code
	mov rdi, message	; First is called by the C library
; startuo code
	call puts		; puts(message)
	ret			; Return from main back into C 
; library wrapper
message:
	db "Hola, mundo", 0	; Note strings must be
; terminated with 0 in C
Пример взят отсюда: https://cs.lmu.edu/~ray/notes/nasmtutorial/
Заголовок: Using a C Library

Компилируется, компонуется и должно выполнятся командами:
nasm -felf64 hola.asm && gcc hola.o -fPIE && ./a.out

Возникает следующая ошибка:
/usr/bin/ld: hola.o: relocation R_X86_64_PC32 against symbol `puts@@GLIBC_2.2.5' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: ошибка конечной ссылки: bad value
collect2: error: ld returned 1 exit status


Если использовать ключ -fPIE вместо ключа -felf64 при компиляции, возникает такой вывод:
$ nasm -fPIA hola.asm
nasm: fatal: unrecognised output format `PIA' - use -hf for a list
type `nasm -h' for help

$ nasm -fPIE hola.asm
nasm: fatal: unrecognised output format `PIE' - use -hf for a list
type `nasm -h' for help

Последний раз редактировалось yurchik84; 15.10.2021 в 14:08.
yurchik84 вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите понять как исправить ошибку в программе на СИ. Pug_from_Mordor Помощь студентам 5 20.12.2014 16:51
Как исправить ошибку при компиляции в Linux(gcc) heret1c Помощь студентам 6 26.05.2013 19:22
Исправить ошибку в программе. Лександра Помощь студентам 1 13.05.2012 14:46
Исправить ошибку в программе MedvedPnZ Общие вопросы C/C++ 1 01.05.2012 19:37

Реклама для незарегистрированных, регистрация на форуме