Я столкнулся с проблемой, которая поглотила много моего зубца. Я пытаюсь связать свой объектный файл (небольшую программу, скомпилированную с помощью nasm) с помощью компоновщика ld и используя функции c. Я много искал и обнаружил, что решение для загрузки всех c libs состоит в том, чтобы передать -lc в качестве параметра ld, который честно отключил все предупреждения и ошибки и сгенерировал мой исполняемый файл. Проблема в том, что я всегда получаю сообщение об ошибке «Нет такого файла или каталога», когда пытаюсь запустить свою программу.
Я много искал в Интернете, и я нашел этот полезный ответ Спросите ответ Ubuntu но, к сожалению, это не решило мою проблему.
немного информации здесь:
> основной файл
вернулся:
main: 64-битный исполняемый файл ELF LSB, x86-64, версия 1 (SYSV), динамическая компоновка, интерпретатор /lib/ld64.so.1, не разделенный
Версия программы 64-битная, а интерпретатор существует согласно "file command.
> лдд главный
вернулся:
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 главная
вернулся:
Заголовок ЭЛЬФ:
Магия: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Класс: ЭЛЬФ64
Данные: дополнение до 2, обратный порядок байтов
Версия: 1 (текущая)
ОС/ABI: UNIX - System V
Версия АБИ: 0
Тип: EXEC (исполняемый файл)
Машина: Advanced Micro Devices X86-64
Версия: 0x1
Адрес точки входа: 0x4005d0
Начало заголовков программы: 64 (байт в файле)
Начало заголовков разделов: 19096 (байт в файле)
Флаги: 0x0
Размер этого заголовка: 64 (байта)
Размер заголовков программы: 56 (байт)
Количество заголовков программ: 7
Размер заголовков разделов: 64 (байта)
Количество заголовков разделов: 21
Индекс таблицы строк заголовка раздела: 20
Некоторая дополнительная информация о программе