redhat 6.5 gcc編譯器初識之一
測試結論
1,gcc是編譯器,分為4個階段
2,4個階段為
預處理階段
編譯階段
彙編階段
連結階段
3,預處理階段為 即把stdio.h標頭檔案內容編譯進來
4,編譯階段為GCC首先要檢查程式碼的規範性,是否有語法錯誤,以確定程式碼實際要作的工作,在檢查無誤後,
GCC把程式碼編譯成彙編程式碼
5,GCC第3個階段即GCC的彙編階段,即把上述GCC第2個階段產生的.S檔案轉化成目標檔案
6,GCC第4個階段,即進入GCC的連結階段。在這裡涉及一個重要的概念:函式庫
我們可以再次檢視這個小程式即helloworld.c,在這個程式中並沒有定義printf函式的實現,
且在其預編譯包含進來的標頭檔案stdio.h中也只有這個函式的宣告,而沒有這個函式的實現,那麼到底在哪兒實現
printf函式的呢。答案是:作業系統會把這些函式實現都作到一個名為libc.so.6的庫檔案中去了,如果在沒有特別指定時,
GCC會到作業系統預設的路徑即/USR/LIB查詢,也就是說會去連結到這個路徑的LIBC.SO.6庫函式中,這樣最終就可以實現函式PRINTF的功能了
7,函式庫一般分2處型別:
靜態庫和動態庫
靜態庫是指在編譯連結時,把庫檔案的程式碼會全部加入到可執行檔案中,因此生成的檔案會比較大,但在執行時也就不需要庫檔案了,其字尾一般為.a,
動態庫,與靜態庫相反,在編譯連結時,並沒有把庫檔案的程式碼加入到可執行檔案中,而是在程式執行時連結檔案載入庫,這樣就可以節省系統的開銷,
動態庫一般字尾為.SO,如前述LIBC.SO.6就是動態庫。
GCC在編譯時預設採用動態庫
測試明細
1,作業系統版本
[root@mygirl ~]# more /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
[root@mygirl ~]#
2,編寫一個helloworld.c原始碼檔案
[root@mygirl ~]# pwd
/root
[root@mygirl ~]#
clude
int main() {
printf("hello world!\n");
return 0;
}
[root@mygirl ~]#
3,進行gcc 4個階段第一個階段 預處理階段,即把stdio.h標頭檔案內容編譯進來
[root@mygirl ~]# gcc -E helloworld.c -o helloworld.i
[root@mygirl ~]#
[root@mygirl ~]# ll hel*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
4,檢視GCC預處理階段產生的檔案,可見此檔案內容極多
[root@mygirl ~]# more helloworld.i|more
# 1 "helloworld.c"
# 1 ""
# 1 ""
# 1 "helloworld.c"
# 1 "/usr/include/stdio.h" 1 3 4
# 28 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 361 "/usr/include/features.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 365 "/usr/include/sys/cdefs.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 366 "/usr/include/sys/cdefs.h" 2 3 4
# 362 "/usr/include/features.h" 2 3 4
# 385 "/usr/include/features.h" 3 4
# 1 "/usr/include/gnu/stubs.h" 1 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 5 "/usr/include/gnu/stubs.h" 2 3 4
# 1 "/usr/include/gnu/stubs-64.h" 1 3 4
# 10 "/usr/include/gnu/stubs.h" 2 3 4
# 386 "/usr/include/features.h" 2 3 4
# 29 "/usr/include/stdio.h" 2 3 4
5,經查stdio.h標頭檔案是把其內容透過GCC預處理階段新增到其預處理的產生的檔案中
[root@mygirl ~]# locate stdio.h
/oracle/product/11.2.0/db_1/perl/lib/5.10.0/x86_64-linux-thread-multi/CORE/nostdio.h
/usr/include/stdio.h
/usr/include/bits/stdio.h
[root@mygirl ~]# more /usr/include/stdio.h|more
/* Define ISO C stdio on top of C++ iostreams.
Copyright (C) 1991, 1994-2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
/*
* ISO C99 Standard: 7.19 Input/output
*/
#ifndef _STDIO_H
#if !defined __need_FILE && !defined __need___FILE
# define _STDIO_H 1
# include
6,進行gcc第二階段之編譯階段,這個階段就是GCC首先要檢查程式碼的規範性,是否有語法錯誤,以確定程式碼實際要作的工作,在檢查無誤後,
GCC把程式碼編譯成彙編程式碼
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
[root@mygirl ~]# gcc -S helloworld.i -o helloworld.s
[root@mygirl ~]#
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
-rw-r--r--. 1 root root 448 Jun 30 06:38 helloworld.s
[root@mygirl ~]# more helloworld.s
.file "helloworld.c"
.section .rodata
.LC0:
.string "hello world!"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $.LC0, %edi
call puts
movl $0, %eax
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-4)"
.section .note.GNU-stack,"",@progbits
7,進行GCC第3個階段即GCC的彙編階段,即把上述GCC第2個階段產生的.S檔案轉化成目標檔案
/root
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
-rw-r--r--. 1 root root 448 Jun 30 06:38 helloworld.s
[root@mygirl ~]#
[root@mygirl ~]#
8,進行GCC第4個階段,即進入GCC的連結階段。在這裡涉及一個重要的概念:函式庫
我們可以再次檢視這個小程式即helloworld.c,在這個程式中並沒有定義printf函式的實現,
且在其預編譯包含進來的標頭檔案stdio.h中也只有這個函式的宣告,而沒有這個函式的實現,那麼到底在哪兒實現
printf函式的呢。答案是:作業系統會把這些函式實現都作到一個名為libc.so.6的庫檔案中去了,如果在沒有特別指定時,
GCC會到作業系統預設的路徑即/USR/LIB查詢,也就是說會去連結到這個路徑的LIBC.SO.6庫函式中,這樣最終就可以實現函式PRINTF的功能了
[root@mygirl ~]# gcc -c helloworld.s -o helloworld.o
[root@mygirl ~]#
[root@mygirl ~]#
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
-rw-r--r--. 1 root root 1504 Jun 30 06:46 helloworld.o
-rw-r--r--. 1 root root 448 Jun 30 06:38 helloworld.s
[root@mygirl ~]# strings helloworld.o
hello world!
[root@mygirl ~]#
9,
函式庫一般分2處型別:
靜態庫和動態庫
靜態庫是指在編譯連結時,把庫檔案的程式碼會全部加入到可執行檔案中,因此生成的檔案會比較大,但在執行時也就不需要庫檔案了,其字尾一般為.a,
動態庫,與靜態庫相反,在編譯連結時,並沒有把庫檔案的程式碼加入到可執行檔案中,而是在程式執行時連結檔案載入庫,這樣就可以節省系統的開銷,
動態庫一般字尾為.SO,如前述LIBC.SO.6就是動態庫。
GCC在編譯時預設採用動態庫
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
-rw-r--r--. 1 root root 1504 Jun 30 06:46 helloworld.o
-rw-r--r--. 1 root root 448 Jun 30 06:38 helloworld.s
[root@mygirl ~]#
[root@mygirl ~]# gcc helloworld.o -o helloworld
[root@mygirl ~]#
[root@mygirl ~]#
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
-rw-r--r--. 1 root root 1504 Jun 30 06:46 helloworld.o
-rw-r--r--. 1 root root 448 Jun 30 06:38 helloworld.s
[root@mygirl ~]#
[root@mygirl ~]# ll helloworld
-rwxr-xr-x. 1 root root 6430 Jun 30 06:58 helloworld
[root@mygirl ~]#
10,檢視GCC第4個階段即GCC的連結階段產生不代副檔名的檔名
[root@mygirl ~]# strings helloworld
/lib64/ld-linux-x86-64.so.2
__gmon_start__
libc.so.6
puts
__libc_start_main
GLIBC_2.2.5
fff.
fffff.
l$ L
t$(L
|$0H
hello world!
[root@mygirl ~]#
11,執行GCC第4個階段產生的執行檔案
[root@mygirl ~]# ./helloworld
hello world!
[root@mygirl ~]#
12,檢視動態庫檔案
[root@mygirl ~]# locate libc.so.6
/lib/libc.so.6
/lib/i686/nosegneg/libc.so.6
/lib64/libc.so.6
/oracle/product/11.2.0/db_1/lib/stubs/libc.so.6
[root@mygirl ~]# strings /lib/libc.so.6 |grep -i --color printf
vswprintf
__obstack_vprintf_chk
vasprintf
printf_size
__vfprintf_chk
vfwprintf
__vsprintf_chk
[root@mygirl ~]# more /oracle/product/11.2.0/db_1/lib/sysliblist
-ldl -lm -lpthread -lnsl -lirc -lipgo -lsvml
1,gcc是編譯器,分為4個階段
2,4個階段為
預處理階段
編譯階段
彙編階段
連結階段
3,預處理階段為 即把stdio.h標頭檔案內容編譯進來
4,編譯階段為GCC首先要檢查程式碼的規範性,是否有語法錯誤,以確定程式碼實際要作的工作,在檢查無誤後,
GCC把程式碼編譯成彙編程式碼
5,GCC第3個階段即GCC的彙編階段,即把上述GCC第2個階段產生的.S檔案轉化成目標檔案
6,GCC第4個階段,即進入GCC的連結階段。在這裡涉及一個重要的概念:函式庫
我們可以再次檢視這個小程式即helloworld.c,在這個程式中並沒有定義printf函式的實現,
且在其預編譯包含進來的標頭檔案stdio.h中也只有這個函式的宣告,而沒有這個函式的實現,那麼到底在哪兒實現
printf函式的呢。答案是:作業系統會把這些函式實現都作到一個名為libc.so.6的庫檔案中去了,如果在沒有特別指定時,
GCC會到作業系統預設的路徑即/USR/LIB查詢,也就是說會去連結到這個路徑的LIBC.SO.6庫函式中,這樣最終就可以實現函式PRINTF的功能了
7,函式庫一般分2處型別:
靜態庫和動態庫
靜態庫是指在編譯連結時,把庫檔案的程式碼會全部加入到可執行檔案中,因此生成的檔案會比較大,但在執行時也就不需要庫檔案了,其字尾一般為.a,
動態庫,與靜態庫相反,在編譯連結時,並沒有把庫檔案的程式碼加入到可執行檔案中,而是在程式執行時連結檔案載入庫,這樣就可以節省系統的開銷,
動態庫一般字尾為.SO,如前述LIBC.SO.6就是動態庫。
GCC在編譯時預設採用動態庫
測試明細
1,作業系統版本
[root@mygirl ~]# more /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
[root@mygirl ~]#
2,編寫一個helloworld.c原始碼檔案
[root@mygirl ~]# pwd
/root
[root@mygirl ~]#
clude
int main() {
printf("hello world!\n");
return 0;
}
[root@mygirl ~]#
3,進行gcc 4個階段第一個階段 預處理階段,即把stdio.h標頭檔案內容編譯進來
[root@mygirl ~]# gcc -E helloworld.c -o helloworld.i
[root@mygirl ~]#
[root@mygirl ~]# ll hel*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
4,檢視GCC預處理階段產生的檔案,可見此檔案內容極多
[root@mygirl ~]# more helloworld.i|more
# 1 "helloworld.c"
# 1 ""
# 1 ""
# 1 "helloworld.c"
# 1 "/usr/include/stdio.h" 1 3 4
# 28 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/features.h" 1 3 4
# 361 "/usr/include/features.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 365 "/usr/include/sys/cdefs.h" 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 366 "/usr/include/sys/cdefs.h" 2 3 4
# 362 "/usr/include/features.h" 2 3 4
# 385 "/usr/include/features.h" 3 4
# 1 "/usr/include/gnu/stubs.h" 1 3 4
# 1 "/usr/include/bits/wordsize.h" 1 3 4
# 5 "/usr/include/gnu/stubs.h" 2 3 4
# 1 "/usr/include/gnu/stubs-64.h" 1 3 4
# 10 "/usr/include/gnu/stubs.h" 2 3 4
# 386 "/usr/include/features.h" 2 3 4
# 29 "/usr/include/stdio.h" 2 3 4
5,經查stdio.h標頭檔案是把其內容透過GCC預處理階段新增到其預處理的產生的檔案中
[root@mygirl ~]# locate stdio.h
/oracle/product/11.2.0/db_1/perl/lib/5.10.0/x86_64-linux-thread-multi/CORE/nostdio.h
/usr/include/stdio.h
/usr/include/bits/stdio.h
[root@mygirl ~]# more /usr/include/stdio.h|more
/* Define ISO C stdio on top of C++ iostreams.
Copyright (C) 1991, 1994-2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
/*
* ISO C99 Standard: 7.19 Input/output
*/
#ifndef _STDIO_H
#if !defined __need_FILE && !defined __need___FILE
# define _STDIO_H 1
# include
6,進行gcc第二階段之編譯階段,這個階段就是GCC首先要檢查程式碼的規範性,是否有語法錯誤,以確定程式碼實際要作的工作,在檢查無誤後,
GCC把程式碼編譯成彙編程式碼
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
[root@mygirl ~]# gcc -S helloworld.i -o helloworld.s
[root@mygirl ~]#
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
-rw-r--r--. 1 root root 448 Jun 30 06:38 helloworld.s
[root@mygirl ~]# more helloworld.s
.file "helloworld.c"
.section .rodata
.LC0:
.string "hello world!"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $.LC0, %edi
call puts
movl $0, %eax
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-4)"
.section .note.GNU-stack,"",@progbits
7,進行GCC第3個階段即GCC的彙編階段,即把上述GCC第2個階段產生的.S檔案轉化成目標檔案
/root
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
-rw-r--r--. 1 root root 448 Jun 30 06:38 helloworld.s
[root@mygirl ~]#
[root@mygirl ~]#
8,進行GCC第4個階段,即進入GCC的連結階段。在這裡涉及一個重要的概念:函式庫
我們可以再次檢視這個小程式即helloworld.c,在這個程式中並沒有定義printf函式的實現,
且在其預編譯包含進來的標頭檔案stdio.h中也只有這個函式的宣告,而沒有這個函式的實現,那麼到底在哪兒實現
printf函式的呢。答案是:作業系統會把這些函式實現都作到一個名為libc.so.6的庫檔案中去了,如果在沒有特別指定時,
GCC會到作業系統預設的路徑即/USR/LIB查詢,也就是說會去連結到這個路徑的LIBC.SO.6庫函式中,這樣最終就可以實現函式PRINTF的功能了
[root@mygirl ~]# gcc -c helloworld.s -o helloworld.o
[root@mygirl ~]#
[root@mygirl ~]#
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
-rw-r--r--. 1 root root 1504 Jun 30 06:46 helloworld.o
-rw-r--r--. 1 root root 448 Jun 30 06:38 helloworld.s
[root@mygirl ~]# strings helloworld.o
hello world!
[root@mygirl ~]#
9,
函式庫一般分2處型別:
靜態庫和動態庫
靜態庫是指在編譯連結時,把庫檔案的程式碼會全部加入到可執行檔案中,因此生成的檔案會比較大,但在執行時也就不需要庫檔案了,其字尾一般為.a,
動態庫,與靜態庫相反,在編譯連結時,並沒有把庫檔案的程式碼加入到可執行檔案中,而是在程式執行時連結檔案載入庫,這樣就可以節省系統的開銷,
動態庫一般字尾為.SO,如前述LIBC.SO.6就是動態庫。
GCC在編譯時預設採用動態庫
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
-rw-r--r--. 1 root root 1504 Jun 30 06:46 helloworld.o
-rw-r--r--. 1 root root 448 Jun 30 06:38 helloworld.s
[root@mygirl ~]#
[root@mygirl ~]# gcc helloworld.o -o helloworld
[root@mygirl ~]#
[root@mygirl ~]#
[root@mygirl ~]# ll helloworld.*
-rw-r--r--. 1 root root 76 Jun 30 06:20 helloworld.c
-rw-r--r--. 1 root root 16751 Jun 30 06:22 helloworld.i
-rw-r--r--. 1 root root 1504 Jun 30 06:46 helloworld.o
-rw-r--r--. 1 root root 448 Jun 30 06:38 helloworld.s
[root@mygirl ~]#
[root@mygirl ~]# ll helloworld
-rwxr-xr-x. 1 root root 6430 Jun 30 06:58 helloworld
[root@mygirl ~]#
10,檢視GCC第4個階段即GCC的連結階段產生不代副檔名的檔名
[root@mygirl ~]# strings helloworld
/lib64/ld-linux-x86-64.so.2
__gmon_start__
libc.so.6
puts
__libc_start_main
GLIBC_2.2.5
fff.
fffff.
l$ L
t$(L
|$0H
hello world!
[root@mygirl ~]#
11,執行GCC第4個階段產生的執行檔案
[root@mygirl ~]# ./helloworld
hello world!
[root@mygirl ~]#
12,檢視動態庫檔案
[root@mygirl ~]# locate libc.so.6
/lib/libc.so.6
/lib/i686/nosegneg/libc.so.6
/lib64/libc.so.6
/oracle/product/11.2.0/db_1/lib/stubs/libc.so.6
[root@mygirl ~]# strings /lib/libc.so.6 |grep -i --color printf
vswprintf
__obstack_vprintf_chk
vasprintf
printf_size
__vfprintf_chk
vfwprintf
__vsprintf_chk
[root@mygirl ~]# more /oracle/product/11.2.0/db_1/lib/sysliblist
-ldl -lm -lpthread -lnsl -lirc -lipgo -lsvml
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-2141450/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- redhat 6.5 parted磁碟分割槽工具初識Redhat
- gcc編譯器小知識FAQ(轉)GC編譯
- 基於redhat 6.5 oracle 11.2.0.4初識oracle asm diskgroup相關概念之一RedhatOracleASM
- gcc 編譯器與 clang 編譯器GC編譯
- RedHat 6.5離線安裝GCC方法RedhatGC
- 20170603星期六之redhat 6.5 asmcmd之一些新用法初識之一RedhatASM
- GCC編譯器的使用GC編譯
- redhat 6.5之oracle 11.2.0.4 asm例項異常抽取asm配置資訊之amdu初識之一RedhatOracleASM
- 安裝 GCC 編譯器(轉)GC編譯
- gcc編譯GC編譯
- FreeBSD中的GNU C編譯器--編譯器GCC(轉)編譯GC
- GCC編譯器背後的故事GC編譯
- Linux gcc編譯器安裝LinuxGC編譯
- 開源編譯器 GCC 跨越 5.0,釋出 GCC 5.1編譯GC
- 探索gcc編譯最佳化細節 編譯器最佳化gcc -o3GC編譯
- 編譯器GCC與Clang的異同編譯GC
- GCC編譯選項GC編譯
- GCC 編譯選項GC編譯
- gcc編譯cpp檔案GC編譯
- GNU 編譯器家族 GCC 內部探密(轉)編譯GC
- GCC 中的編譯器堆疊保護技術GC編譯
- Linux上安裝GCC編譯器過程(轉)LinuxGC編譯
- Linux中gcc編譯工具LinuxGC編譯
- linux下的gcc編譯LinuxGC編譯
- gcc 編譯多個原始檔GC編譯
- gcc最佳編譯引數(轉)GC編譯
- Elam的caffe筆記之配置篇(一):CentOS6.5編譯安裝gcc4.8.2筆記CentOS編譯GC
- GCC編譯過程(預處理->編譯->彙編->連結)GC編譯
- 【軟體開發底層知識修煉】五 gcc-C語言編譯器GCC語言編譯
- Android 編譯時註解-初認識Android編譯
- GCC 使用指南及gcc最佳編譯引數(轉)GC編譯
- redhat下如何編譯bbed!Redhat編譯
- 原創 【CentOS Linux 7】實驗4【gcc編譯器】CentOSLinuxGC編譯
- 在aix5.2下面安裝gcc編譯器AIGC編譯
- GCC編譯和連結過程GC編譯
- linux 改變GCC編譯器的位元組對齊方式LinuxGC編譯
- 記錄一次gcc的編譯GC編譯
- linux下gcc/g++編譯用法LinuxGC編譯