Tôi có thể đang làm điều gì sai, là một người mới. Ông có thể giúp tôi không?"tệp không được nhận dạng" trong khi sử dụng trình liên kết GNU
Tôi đã viết một chương trình Hello World đơn giản trong C gọi là hello.c, và chạy lệnh sau:
gcc -S hello.c
Đó sản xuất hello.s
. Sau đó, tôi sử dụng mà tập tin với GNU lắp ráp, as
:
as hello.s
nào sản xuất một tổ chức phi thực thi a.out
, mà vẫn cần phải được liên kết, tôi hiểu không?
tôi cố gắng liên kết nó bằng cách sử dụng ld
, như vậy:
ld a.out
Nhưng nhận được lỗi sau:
a.out: file not recognized: File truncated
Và ld
xóa tập tin của tôi.
Đây là hệ thống Ubuntu x86. Tôi đang làm gì sai? Cảm ơn nhiều!
Để trả lời câu hỏi của bạn, tôi đoán anh ấy đang cố gắng học lắp ráp ... – Zifre
Tôi nhận ra rằng, nhưng tôi muốn sử dụng như và ld độc lập với gcc. Tôi đang học x86. Đầu ra của gcc -S giúp tôi xem cách gcc thực hiện các chương trình C khác nhau trong assembly. Sau đó, tôi có thể sửa đổi và chơi với mã lắp ráp đó và cuối cùng lắp ráp và liên kết nó bản thân mình, sử dụng như và ld. Tôi nhận ra gcc có thể lắp ráp và liên kết các tệp này cho tôi, nhưng nó chỉ sử dụng như và ld thay cho tôi. Tôi muốn sử dụng như và ld trực tiếp. –