gcc 기초★

2444 단어 linux
http://wenku.baidu.com/view/c77d0ad5b9f3f90f76c61b78.html
이 문장 은 내 가 쓴 것 과 무관 하 다
《linux 고급 프로 그래 밍》을 읽다.

[root@localhost ctest]# cat message.c 
#include <stdio.h>
void goodbye_world(void){
        printf("good by world
"); } [root@localhost ctest]#

[root@localhost ctest]# cat main.c 
#include <stdlib.h>
void goodbye_world(void);
int main(int argc,char **argv){
        goodbye_world();
        exit(0);
}
[root@localhost ctest]# 

1.gcc -c message.c
  gcc -c main.c
  gcc -o goodbye main.o message.o
혹은
2.gcc -o goodbye main.c message.c
공유 라 이브 러 리:공유 함수 라 이브 러 리 는 모든 라 이브 러 리 루틴 의 단일 전역 버 전 을 포함 하고 모든 응용 프로그램 간 에 공유 합 니 다.이 과정 뒤에 관련 된 메커니즘 은 상세 하고 복잡 하지만 주로 현대 컴퓨터 의 가상 메모리 능력 에 의존 합 니 다.그 는 라 이브 러 리 루틴 을 포함 한 집에 서 여러 개의 독립 된 사용자 프로그램 간 에 안전하게 공유 할 수 있 습 니 다.
"위치 와 무관 합 니 다".그 는 임의의 메모리 위치 에 설치 되 어 있 고 실행 할 수 있 습 니 다.
★★★★★★★★★★★★★★★★★
gcc -fPIC -c message
"PIC"명령 행 표 시 는 GCC 에서 발생 하 는 코드 에 함수 와 변수의 구체 적 인 메모리 위치 에 대한 인용 을 포함 하지 말 라 고 알려 줍 니 다.
gcc -shared -o libmessage.so message.o
gcc -o goodbye -lmessage -L. main.c
혹시
gcc -c main.c
gcc -o goodbye -lmessage -L. main.o
[root@localhost ctest]# ls
goodbye  libmessage.so  main.c  main.o  message.c  message.o
[root@localhost ctest]# ldd goodbye 
        linux-gate.so.1 =>  (0x00975000)
        libmessage.so => not found
        libc.so.6 => /lib/libc.so.6 (0x4cfdf000)
        /lib/ld-linux.so.2 (0x4cfba000)
[root@localhost ctest]# 

-c gcc 드라이버 에 내부 c 컴 파 일 러 를 호출 하고 외부 gnu 어 셈 블 리 에 출력 을 전달 합 니 다.출력 결 과 는.o 인 파일 입 니 다.큰 프로그램 에 연결 할 수 있 는 컴 파 일 된 대상 코드 를 포함 합 니 다.
gcc 옵션:
1.일반 옵션  -c -s
2.언어 옵션
          -ansi
          -std
          -fno-builtin
3.경고 단계
          -pedantic  pedantic-errors
          -Wformat
          -Wall
4.디 버 깅
          -g
5.최적화
          -o1 -o2 -o3
6.하드웨어 옵션
          -marh
          -msoft-float
          -mbig-endian
          -mlittle-endian
          -mabi
man gcc
info gcc
디 버 깅 정보 추가
gcc -g -o hello -Wall -pedantic-errors hello.c
objdump -x -d -S hello

좋은 웹페이지 즐겨찾기