GCC编译链接多文件

59 篇文章 1 订阅

gcc是Linux/Unix上非常强大的C语言编译器。并且如今也支持C++的编译。与VC不同,gcc是完全跨平台的。到目前为止很多工具都使用gcc作为其编译环境,比如cocos2d-x,android的NDK等等。 学习使用gcc编译器,就是学习它众多的编译参数。就是用连字符-连接的参数.
因为它的参数并不全是单字符的,所以不能使用一个连字符后加多个参数的写法, 要每个参数前面都要加一个连字符.

常用用法

直接在gcc后面加上要编译的C语言源文件
gcc hello.c
这种默认的情况下会生成一个名为a.out的可执行文件。
-o 最常用的编译选项,用于指定要生成的可执行文件的名称。
gcc -o hello hello.c
需要体会的一点是:gcc对于参数的位置无要求!比如也可以写作
gcc hello.c -o hello
惟一要注意的就是-o后面一定要紧跟要生成的可执行文件名。
-g 用于给生成的可执行文件加上调试信息,只有这样才可使用gdb调试。
gcc -g -o hello hello.c
同样参数-g的也可写在hello.c后面。

-D选项
参考如下代码great.c

#include <stdio.h>
int main(int argc, char *argv[])
{
#ifdef MYDEBUG
    printf("test\n");
#endif
    printf("hello world\n");

    return 0;
}

如果我想要让程序打印test,测试该分支运行情况可以用如下命令:
gcc -DMYDEBUG -g -o great great.c
./great
如果直接
gcc -o great great.c
./great
程序执行结果:

通过使用—D选项可以测试程序分支的正确与否,验证程序的逻辑正确性.

华丽的分割线

选项 -E
gcc -E test.c -o test.i 将test.c预处理输出test.i文件。
选项 -S
gcc -S test.i 将预处理输出文件test.i汇编成test.s文件。
选项 -c
gcc -c test.s 将汇编输出文件test.s编译输出test.o文件。

多文件编译与Makefile

1.多个文件一起编译
用法:gcc a.c b.c c.c d.c -o main
作用:将多个.c文件编译后链接成可执行文件 ./main执行
2.单独编译各个源文件,然后对编译后的.o文件进行链接
gcc -c a.c //生成a.o
gcc -c b.c //生成b.o
gcc -c c.c //生成d.o
gcc -c d.c //生成d.o
例子:
display.c

#include <stdio.h>
void display(const char *str)
{
    printf("hello world :%s.\n",str);
}

main.c

#include <stdio.h>
extern func();
int main()
{
    display("52coder");
    return 0;
}

关于在main.c中extern func()是告诉编译器func()声明在别的文件,如果不加这一行的话会有如下告警:
main.c:5:5: warning: implicit declaration of function ‘display’ [-Wimplicit-function-declaration]

使用c99标准编译 默认的情况下,编译器是以c89的标准编译的。使用c99则:
gcc -std=c99 hello.c

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值