I used mipsel-linux-gcc to compile my project,but I found the fact that the final elf file is more larger than the one built with mips-elf-gcc. I have found the fact that the alignment of the segment is 0x10000!(64K),as following: Section Headers: [Nr] Name Type Addr Off Size ES Flg Lk Inf Al [ 0] NULL 00000000 000000 000000 00 0 0 0 [ 1] .text PROGBITS 80000000 010000 010a40 00 AX 0 0 16 [ 2] .data PROGBITS 80010a40 020a40 000310 00 WA 0 0 16 [ 3] .bss NOBITS 80010d50 020d50 0011a0 00 WA 0 0 16 [ 4] .reginfo MIPS_REGINFO 80011ef0 021ef0 000018 18 A 0 0 4 [ 5] .pdr PROGBITS 00000000 021f08 003000 00 0 0 4 [ 6] .mdebug.abi32 PROGBITS 00000000 024f08 000000 00 0 0 1 [ 7] .debug_abbrev MIPS_DWARF 00000000 024f08 001e43 00 0 0 1 [ 8] .debug_info MIPS_DWARF 00000000 026d4b 009647 00 0 0 1 [ 9] .debug_line MIPS_DWARF 00000000 030392 0021ce 00 0 0 1 [10] .debug_frame MIPS_DWARF 00000000 032560 001d48 00 0 0 4 [11] .debug_pubnames MIPS_DWARF 00000000 0342a8 0012f4 00 0 0 1 [12] .debug_aranges MIPS_DWARF 00000000 0355a0 0003e0 00 0 0 8 [13] .debug_str MIPS_DWARF 00000000 035980 000322 00 0 0 1 [14] .comment PROGBITS 00000000 035ca2 0001d4 00 0 0 1 [15] .shstrtab STRTAB 00000000 035e76 0000ae 00 0 0 1 [16] .symtab SYMTAB 00000000 0361f4 002b20 10 17 112 4 [17] .strtab STRTAB 00000000 038d14 001f66 00 0 0 1 Key to Flags: W (write), A (alloc), X (execute), M (merge), S (strings) I (info), L (link order), G (group), x (unknown) O (extra OS processing required) o (OS specific), p (processor specific) Program Headers: Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align REGINFO 0x021ef0 0x80011ef0 0x80011ef0 0x00018 0x00018 R 0x4 LOAD 0x010000 0x80000000 0x80000000 0x10d50 0x11ef0 RWE 0x10000 LOAD 0x021ef0 0x80011ef0 0x80011ef0 0x00018 0x00018 R 0x10000 Section to Segment mapping: Segment Sections... 00 .reginfo 01 .text .data .bss 02 .reginfo Because the Linux page size is 4K(0x1000),how can I modify the segment alignment to ox1000? Help me!