ฉันรวบรวมโปรแกรม C ขนาดเล็ก (รหัส 2 บรรทัด) กับ gcc เพื่อพยายามทำความเข้าใจกับรูปแบบไฟล์ ELF ทำreadelf -h
ในไฟล์วัตถุฉันมีในส่วนหัว:
OS/ABI: UNIX - System V
ฉันกำลังใช้งาน Fedora ดังนั้นทำไมไม่ใช้ Linux แทนล่ะ
แก้ไข : ฉันรวบรวม
int main(){
int x = 0;
x++;
}
gcc -o main.o -c main.c
กับ รุ่น gcc ของฉันคือ
gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4)
ฉันแก้ไขคำถามแล้ว
—
alex_reader
ฉันเพิ่งทำ
—
ctrl-alt-delor
readelf -h /bin/ls
บนเดเบียน gnu / linux OS/ABI: UNIX - System V
นอกจากนี้ยังแสดงให้เห็นว่า ฉันเดาว่า ABI นั้นใช้กับเคอร์เนลมากกว่าหนึ่งตัวไม่ใช่แค่ลินุกซ์ ฉันก็รู้ว่า linux รองรับมากกว่าหนึ่ง ABI
Wikipediaบอกว่ามัน [ฟิลด์ OSABI ในส่วนหัวของเอลฟ์] นั้นถูกตั้งค่าเป็น 0 [SysV] โดยไม่คำนึงถึงแพลตฟอร์มเป้าหมาย
—
Stéphane Chazelas
ฟิลด์นี้จะบอกว่าไฟล์ ELF กำลังใช้งานส่วนขยายเฉพาะ OS ใด ๆ หรือไม่ค่าเริ่มต้นคือ 0 คำอธิบาย detailled เพิ่มเติมที่นี่ (ที่ EI_OSABI)
—
Leiaz
gcc --version
และ iii) คำสั่งที่คุณใช้ในการรวบรวม