Я столкнулся с проблемой, которая занимает много времени. Я пытаюсь связать свой объектный файл (с небольшой программой, скомпилированной с помощью nasm ), с компоновщиком ld и с использованием функций c. Я много искал и обнаружил, что решение для загрузки всех c libs состоит в том, чтобы передать -lc в качестве параметра ld, который честно отключил все предупреждения и ошибки и сгенерировал мой исполняемый файл. Проблема в том, что я всегда получаю сообщение об ошибке «Нет такого файла или каталога», когда пытаюсь запустить свою программу.
Я много искал в Интернете и нашел этот полезный ответ Спросите ответ Ubuntu , но, к сожалению, это не решило мою проблему.
немного информации здесь:
> file main
returned:
main: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld64.so.1, not stripped
Версия программы 64-битная, а интерпретатор существует в соответствии с "командой файла".
> ldd main
returned:
linux-vdso.so.1 (0x00007ffdf4bcc000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7a10b23000)
/lib/ld64.so.1 => /lib64/ld-linux-x86-64.so.2 (0x00007f7a10f14000)
В соответствии с командой "ldd" отсутствует отсутствующая общая библиотека
Примечание:Та же программа скомпилирована и успешно скомпонована с помощью nasm и ld на macosx путем добавления этих опций
-macosx_version_min 11.0 -L /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib -lSystem -no_pie
к линкеру ld.
РЕДАКТИРОВАТЬ1:Связанная программа работает без проблем, когда я удаляю -lc для ld и, конечно же, вызовы функций c внутри моего asm-файла
РЕДАКТИРОВАТЬ2:
readelf -h main
returned:
ELF Header:
Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Class: ELF64
Data: 2's complement, little endian
Version: 1 (current)
OS/ABI: UNIX - System V
ABI Version: 0
Type: EXEC (Executable file)
Machine: Advanced Micro Devices X86-64
Version: 0x1
Entry point address: 0x4005d0
Start of program headers: 64 (bytes into file)
Start of section headers: 19096 (bytes into file)
Flags: 0x0
Size of this header: 64 (bytes)
Size of program headers: 56 (bytes)
Number of program headers: 7
Size of section headers: 64 (bytes)
Number of section headers: 21
Section header string table index: 20
Дополнительная информация о программе