GCC的简单使用规则

来源:互联网 发布:视听许可证 知乎 编辑:程序博客网 时间:2024/06/02 05:30

1、路径设置

在生成gcc的时候,给他指定了头文件和库文件的默认搜索路径,可通过gcc –v命令获取,如下:

 

       Usingbuilt-in specs.

COLLECT_GCC=gcc

COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6.1/lto-wrapper

Target:i686-linux-gnu

Configured with:../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.1-9ubuntu3'--with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs--enable-languages=c,c++,fortran,objc,obj-c++,go --prefix=/usr--program-suffix=-4.6 --enable-shared --enable-linker-build-id--with-system-zlib --libexecdir=/usr/lib --without-included-gettext--enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6--libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu--enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-plugin--enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686--with-tune=generic --enable-checking=release --build=i686-linux-gnu--host=i686-linux-gnu --target=i686-linux-gnu

Thread model:posix

gcc version 4.6.1(Ubuntu/Linaro 4.6.1-9ubuntu3)

 

从上面输出可以看出,默认的头文件目录为/usr,即通过—prefix指定,而库文件目录位于/usr/lib,通过-libdir指定,常规编译时,gcc总是先到指定标准目录里寻找头文件等,如果不想使用标准的C库,则可以-nostdinc-nostdlib禁止掉所有的标准头文件和库文件的搜索目录,之后在命令行通过-I-L 指定想要的头文件目录和库文件目录。

 

2、中间编译选项

Gcc 几个重要的编译选项如下:

       -E    只做预处理,生成.i的预处理文件

       -S    只做汇编处理,生成.s的汇编文件

       -o    指定目标文件名

       -c    只做编译,生成obj文件后不做连接

 

3、生成库文件

       库文件分为动态库和静态库,两种库文件都是通过.o目标文件生成的,静态库文件生成步骤如下:

              gcc–c my.c

              arcrv libmy.a my.o            静态库文件必须以lib为前缀,紧跟静态库名,扩展名为.a

       静态库的使用很简单:

              Gcc–o test test.c –L. –lmy 注意-l的后面为my,而不是libmy

       动态库的创建也是先生成.o目标文件,然后使用下面的命令:

              gcc–shared –Fpci –o libmy.so my.o  动态库文件也以lib为前缀,扩展名为.so

       动态库的使用和静态库的使用采用同样的命令,不过在执行程序时,要记得把动态库拷贝到系统动态共享库目录中去。

       Gcc在连接时,如果同时发现了动态库和静态库,则优先使用动态库,可通过-static来强制使用静态库。

原创粉丝点击