tôi đang đối mặt với một vấn đề tiêu tốn rất nhiều thời gian của tôi. tôi đang cố gắng liên kết tệp đối tượng của mình (chương trình nhỏ được biên dịch bằng nasm) với trình liên kết ld và sử dụng các hàm c. Tôi đã tìm kiếm rất nhiều và tôi thấy rằng giải pháp để tải tất cả các thư viện c là chuyển -lc làm tùy chọn cho ld, tùy chọn này đã tắt tiếng tất cả các cảnh báo và lỗi một cách trung thực và tạo ra tệp thực thi của tôi. Vấn đề là tôi luôn gặp lỗi "Không có tệp hoặc thư mục như vậy" khi tôi cố chạy chương trình của mình.
Tôi đã tìm kiếm rất nhiều trên internet và tôi tìm thấy câu trả lời hữu ích này Hỏi Ubuntu Trả lời nhưng tiếc là điều này không giải quyết được vấn đề của tôi.
một số thông tin ở đây:
> tập tin chính
trả lại:
chính: ELF 64-bit LSB có thể thực thi được, x86-64, phiên bản 1 (SYSV), được liên kết động, trình thông dịch /lib/ld64.so.1, không bị tước bỏ
Phiên bản chương trình là 64 bit và trình thông dịch tồn tại theo "file command.
> ldd chính
trả lại:
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)
Theo lệnh "ldd", không có thư viện dùng chung nào bị thiếu
NB:
Chương trình tương tự được biên dịch và liên kết thành công với nasm và ld trên macosx bằng cách thêm các tùy chọn đó
-macosx_version_min 11.0 -L /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/lib -lSystem -no_pie
đến trình liên kết ld.
CHỈNH SỬA1:
Chương trình được liên kết hoạt động mà không có bất kỳ sự cố nào khi tôi xóa -lc cho ld và tất nhiên các lệnh gọi hàm c bên trong tệp asm của tôi
CHỈNH SỬA2:
readelf -h chính
trả lại:
Tiêu đề ELF:
Phép thuật: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00
Lớp: ELF64
Dữ liệu: phần bù 2, endian nhỏ
Phiên bản: 1 (hiện tại)
HĐH/ABI: UNIX - Hệ thống V
Phiên bản ABI: 0
Loại: EXEC (Tệp thực thi)
Máy: Advanced Micro Devices X86-64
Phiên bản: 0x1
Địa chỉ điểm vào: 0x4005d0
Bắt đầu tiêu đề chương trình: 64 (byte vào tệp)
Bắt đầu tiêu đề phần: 19096 (byte vào tệp)
Cờ: 0x0
Kích thước của tiêu đề này: 64 (byte)
Kích thước của tiêu đề chương trình: 56 (byte)
Số lượng tiêu đề chương trình: 7
Kích thước của tiêu đề phần: 64 (byte)
Số lượng tiêu đề phần: 21
Chỉ mục bảng chuỗi tiêu đề phần: 20
Một số thông tin thêm về chương trình