gcc的工作原理是怎样的?

2026-06-09 01:306阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计659个文字,预计阅读时间需要3分钟。

gcc的工作原理是怎样的?

使用gcc编译程序的基本步骤如下:

1. 编写C源代码文件,例如`源文件.c`。

2.使用gcc命令进行编译:

- `-E`:仅进行预处理,不进行编译。 - `-S`:将源代码编译成汇编代码。 - `-c`:编译源代码生成目标文件,不进行链接。 - `-o`:指定输出文件名,默认为`a.out`。

3.如果需要链接其他库,可以使用`gcc`命令加上相应的库文件。

4.例如,编译并生成可执行文件`程序名`:

gcc 源文件.c -o 程序名

5.如果需要指定头文件位置,可以使用`-I`选项:

gcc的工作原理是怎样的?

gcc 源文件.c -o 程序名 -I 头文件位置

gcc使用原理

gcc工作原理 预处理gcc -E 编译 gcc -S 汇编 gcc -c 链接 gcc 无参数

gcc c源文件.c -o 生成可执行文件名称 不指定可执行文件名称默认生产a.out

gcc编译时指定 -I头文件位置(头文件在可执行文件目录中不需要指定位置)

-D 指定宏位置

-O1默认优化 -O3最高级优化 … 静态库 命名规则 lib+库名字+.a

制作静态库步骤 生成.o文件 gcc c源文件 -c

打包.o文件 ar rcs lib静态库文件名字.a + 上一步生成的.o文件

发布 给客户 静态库文件和头文件两部分

客户拿到静态库和头文件后,可以自己再写个c程序来调用静态库和头文件里面的函数,然后再gcc可执行文件发布出去,发布出去不用再给别人前面的静态库和头文件了(这是优点),因为在生成可执行文件就打包进去了。所以静态库缺点就是容量大,如果库文件或者头文件发生改变,要重新生成可执行文件,比较麻烦。

… 动态库(共享库) 命名规则 lib+库名字+.so

制作动态库步骤 生成.o文件 gcc c源文件 -fPIC -c

打包.o文件 gcc -shared -o lib静态库文件名字.so + 上一步生成的.o文件

客户拿到动态库和头文件后,可以自己再写个c程序,用动态库连接器调用(ldd + 可执行文件 可查看,最后一排就是动态库连接器ld.so.conf,其实也是一个库文件在/etc下,一般都是把自己写的动态库位置文件夹路径,写到这个文件里面,然后再更新系统库文件ldconfig -v,不然客户发布的可执行文件找不到库报错)动态库和头文件里面的函数,然后再gcc可执行文件发布出去

本文共计659个文字,预计阅读时间需要3分钟。

gcc的工作原理是怎样的?

使用gcc编译程序的基本步骤如下:

1. 编写C源代码文件,例如`源文件.c`。

2.使用gcc命令进行编译:

- `-E`:仅进行预处理,不进行编译。 - `-S`:将源代码编译成汇编代码。 - `-c`:编译源代码生成目标文件,不进行链接。 - `-o`:指定输出文件名,默认为`a.out`。

3.如果需要链接其他库,可以使用`gcc`命令加上相应的库文件。

4.例如,编译并生成可执行文件`程序名`:

gcc 源文件.c -o 程序名

5.如果需要指定头文件位置,可以使用`-I`选项:

gcc的工作原理是怎样的?

gcc 源文件.c -o 程序名 -I 头文件位置

gcc使用原理

gcc工作原理 预处理gcc -E 编译 gcc -S 汇编 gcc -c 链接 gcc 无参数

gcc c源文件.c -o 生成可执行文件名称 不指定可执行文件名称默认生产a.out

gcc编译时指定 -I头文件位置(头文件在可执行文件目录中不需要指定位置)

-D 指定宏位置

-O1默认优化 -O3最高级优化 … 静态库 命名规则 lib+库名字+.a

制作静态库步骤 生成.o文件 gcc c源文件 -c

打包.o文件 ar rcs lib静态库文件名字.a + 上一步生成的.o文件

发布 给客户 静态库文件和头文件两部分

客户拿到静态库和头文件后,可以自己再写个c程序来调用静态库和头文件里面的函数,然后再gcc可执行文件发布出去,发布出去不用再给别人前面的静态库和头文件了(这是优点),因为在生成可执行文件就打包进去了。所以静态库缺点就是容量大,如果库文件或者头文件发生改变,要重新生成可执行文件,比较麻烦。

… 动态库(共享库) 命名规则 lib+库名字+.so

制作动态库步骤 生成.o文件 gcc c源文件 -fPIC -c

打包.o文件 gcc -shared -o lib静态库文件名字.so + 上一步生成的.o文件

客户拿到动态库和头文件后,可以自己再写个c程序,用动态库连接器调用(ldd + 可执行文件 可查看,最后一排就是动态库连接器ld.so.conf,其实也是一个库文件在/etc下,一般都是把自己写的动态库位置文件夹路径,写到这个文件里面,然后再更新系统库文件ldconfig -v,不然客户发布的可执行文件找不到库报错)动态库和头文件里面的函数,然后再gcc可执行文件发布出去