Ubuntu下用GCC编译笔记

今天跑到Ubuntu下用GCC编译,费了很大事。主要对参数传递过程不太明白,原来是先生成可执行文件,之后再传递参数./particleMovie parameters...,而之前要经过预编译,编译,生成可执行文件等过程。

可以直接用gcc particleMovie.c -o particle直接生成,而引入参数要加-I,引入当前文件夹下include文件夹为-I./include,同时为了使sqrt函数可以正确被解析,不仅要引入math.h头文件,还要在编译时加上-lm,m代表math,-l是引入库文件。

gcc使用引用如下。

编译:

第一步、是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:

gcc -E hello.c -o hello.i

预处理的宏定义插入到hello.i中

第二步、是将hello.i编译为目标代码,这可以通过使用-c参数来完成:

gcc -c hello.i -o hello.o

也可以通过源文件直接生成

gcc -c hello.c

第三步、是将生成的目标文件链接成可执行文件:

gcc hello.o -o hello

也可以通过源文件直接生成

gcc -o hello hello.c

警告:

1、-pedantic 选项,那么使用了扩展语法的地方将产生相应的警告信息

2、-Wall 使用它能够使GCC产生尽可能多的警告信息

3、-Werror,它要求GCC将所有的警告当成错误进行处理

库依赖:

1、Linux下的大多数函数都默认:

头文件放到/usr/include/目录下

而库文件则放到/usr/lib/目录下

2、GCC在编译时必须有自己的办法来查找所需要的头文件和库文件。

-I选项可以向GCC的头文件搜索路径中添加新的目录。

例如,如果在/home/xiaowp/include/目录下有编译时所需要的头文件,为了让GCC能够顺利地找到它们,就可以使用-I选项:

gcc -o test test.c -I /home/xiaowp/include

-L选项向GCC的库文件搜索路径中添加新的目录

例如,如果在/home/xiaowp/lib/目录下有链接时所需要的库文件libfoo.so,为了让GCC能够顺利地找到它,可以使用下面的命令

gcc -o test test.c -L /home/xiaowp/lib -lfoo

值得好好解释一下的是-l选项,它指示GCC去连接库文件libfoo.so。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpxgz.html