Tôi đã biên dịch một chương trình C nhỏ (2 dòng mã) với gcc để cố gắng hiểu định dạng tệp ELF. Làm một readelf -h
tệp trên đối tượng, tôi có trong tiêu đề:
OS/ABI: UNIX - System V
Tôi đang sử dụng Fedora, vậy tại sao không phải là Linux thay thế?
Chỉnh sửa : Tôi đã biên dịch
int main(){
int x = 0;
x++;
}
với gcc -o main.o -c main.c
. Phiên bản gcc của tôi là
gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)
Tôi đã chỉnh sửa câu hỏi tương ứng.
—
alex_reader
Tôi vừa mới làm
—
ctrl-alt-delor
readelf -h /bin/ls
trên debian gnu / linux. Nó cũng cho thấy OS/ABI: UNIX - System V
. Tôi đoán là ABI được sử dụng trên nhiều kernel, không chỉ linux. Tôi cũng biết rằng linux hỗ trợ nhiều hơn một ABI.
Wikipedia cho biết Nó [trường OSABI trong tiêu đề ELF] thường được đặt thành 0 [SysV] bất kể nền tảng đích
—
Stéphane Chazelas
Trường này cho biết nếu tệp ELF đang sử dụng bất kỳ tiện ích mở rộng cụ thể nào của HĐH, mặc định là 0. Mô tả chi tiết hơn ở đây (tại EI_OSABI).
—
Leiaz
gcc --version
và iii) lệnh chính xác mà bạn đã sử dụng để biên dịch mã đó.