GCC编译、使用注意

如果我们项目在开发的时候,引用了其它的第三方库文件,可以会在GCC编译的时候,出现找不到库文件或者其它的错误,如之前在用libosip库的时候,没有指定库的安装路径,默认安装路径是/usr/local/lib目录下。
GCC在编译的时候,需要头文件和库文件进行连接,其会搜索指定的目录来查找所需要的头文件和库文件,-I 选项可以向GCC的头文件搜索路径中添加一个新的搜索目录,如:
gcc -o sip_client sip.c -I /usr/local/include
表示在/usr/local/include目录下有编译时候所需要的头文件,因此用-I 指定路径,这样GCC就能够顺利的找到这些文件。
如果是库文件,就用-L选项指定,如:
gcc -o sip_client sip.c -L /usr/local/lib -leXosip2
这会向GCC编译的时候,添加库文件的搜索路径。
linux下的库文件有两种类型:一种是动态链接库,就是.so文件,第二种是静态链接库文件,一般都是.a文件,这两种库文件的差别是:程序在运行时,所需要的代码是在运行时动态加载的,还是在编译的时候静态加载的。在默认的情况下,GCC会优先使用动态链接库,也就是说如果so和.a文件同时存在的时候,会优先使用.so文件。如果我们希望程序使用静态链接库,可以加上-static选项,强制其使用静态链接库。路径都是用-L选项来指定。

通过 gcc-v 命令,可知道gcc的bin程序在 /usr目录下, 库路径为/usr/lib include 路径为/usr/include/c++/4
–enable-languages=c,c++,fortran,objc,obj-c++ –prefix=/usr
–libexecdir=/usr/lib - –with-gxx-include-dir=/usr/include/c++/4. –libdir=/usr/lib
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5)

本机电脑装的工具链为arm-linux-gnueabihf, 通过arm-linux-gnueabihf-gcc -v 命令,可知 lib库的位置为/usr/arm-linux-gnueabihf/lib,include的位置为includedir=/usr/arm-linux-gnueabihf/include
–prefix=/usr –libexecdir=/usr/lib –with-gxx-include-dir=/usr/arm-linux-gnueabihf/include/c++/4.6.3 –libdir=/usr/lib –includedir=/usr/arm-linux-gnueabihf/include
–with-headers=/usr/arm-linux-gnueabihf/include
–with-libs=/usr/arm-linux-gnueabihf/lib

这样,当要编译的程序用到的库,复制到/usr/arm-linux-gnueabihf/lib 及 /usr/arm-linux-gnueabihf/include 目录中,在ubuntu系统上将编译成功。 别忘记库文件也需放在 Arm的文件系统中,否则运行出错。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值