gcc 기초★
2444 단어 linux
이 문장 은 내 가 쓴 것 과 무관 하 다
《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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.