Linux学习入门--GCC学习总结

1. gcc编译C程序过程,需要经过四个步骤:

182725_TbR2_3783667.png

2. gcc常用命令及使用方法

-c -g -o -O -D -U -I -L -lname -shared -w -W -Wall可以参照GCC手册

需要注意的是-g -O选项最好不要同时使用,因为调试和优化通常不兼容,使用后容易出现奇怪现象

下面利用Hello_world代码来练习以上命令:

#include <stdio.h>

int main(void)
{
  printf("Hello World!\n");

  return 0;
}
  • -c -g -o命令

---------------------------------------------------------------------------------

-c命令可以生成对应的.o文件

chenjiang@ubuntu:~/Linux_C/2/2_4$ gcc -c gcc_hello_world.c
chenjiang@ubuntu:~/Linux_C/2/2_4$ ls
gcc_hello_world.c  gcc_hello_world.o

---------------------------------------------------------------------------------

使用以下命令可以生成可执行文件

chenjiang@ubuntu:~/Linux_C/2/2_4$ gcc -g gcc_hello_world.o -o gcc_hello_world
chenjiang@ubuntu:~/Linux_C/2/2_4$ ls
gcc_hello_world  gcc_hello_world.c  gcc_hello_world.o
chenjiang@ubuntu:~/Linux_C/2/2_4$ ./gcc_hello_world
Hello World!

  • -D的使用
#include <stdio.h>

int main(void)
{

#ifdef GCC
  printf("Hello GCC!\n");
#else
  printf("Hello World!\n");
#endif

  return 0;
}

如果在编译的时候不带宏定义,那么输出的应该为Hello World!,如果带宏定义'GCC‘,应该输出Hello GCC!

chenjiang@ubuntu:~/Linux_C/2/2_4$ gcc -g gcc_hello_world.c -o gcc_hello_world
chenjiang@ubuntu:~/Linux_C/2/2_4$ ls
gcc_hello_world  gcc_hello_world.c
chenjiang@ubuntu:~/Linux_C/2/2_4$ ./gcc_hello_world
Hello World!
chenjiang@ubuntu:~/Linux_C/2/2_4$ gcc -D GCC -g gcc_hello_world.c -o gcc_hello_world
chenjiang@ubuntu:~/Linux_C/2/2_4$ ./gcc_hello_world
Hello GCC!

此外 -D在宏定义后可以赋值,默认为1,比如gcc -D GCC=2 -g gcc_hello_world.c -o gcc_hello_world

此时GCC的值为2

  • -I -L的使用
gcc_hello_world.c
--------------------------------
#include <stdio.h>
#include "print.h"

int main(void)
{
 
  print_hello();

  return 0;
}


print.c
--------------------------------
#include <stdio.h>
#include "print.h"

void print_hello(void)
{
  printf("Hello world!\n");
}

print.h
---------------------------------
#ifndef PRINT_H
#define PRINT_H

void print_hello(void);

#endif

如果.h文件即print.h和.c文件不在同一级目录,那么会出现以下错误:

192454_gFEB_3783667.png

此时需要用-I选项,来指定头文件的路径,命令如下:

192625_4UJi_3783667.png

-L与-I类似,只不过-L是指定库的位置。

3. 静态库和动态库的生成

3.1 静态库的生成及使用

同样利用上述-I演示的例子,需要经过以下步骤:

194407_53bb_3783667.png

3.2 动态库的生成及使用

同样利用上述-I演示的例子,需要经过以下步骤:

195822_grxA_3783667.png

转载于:https://my.oschina.net/xiangxyq/blog/1623726

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值