gcc 参数

网上很多这种帖子,也不知道哪个是原贴了。
写下来记录一下
我们用gcc编译程序时,常常会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录:

-I:指定第一个寻找头文件的目录

-L:指定第一个寻找库文件的目录

-l:表示在库文件目录中寻找指定的动态库文件

gcc -o hello hello.c   -I/home/hello/include   -L/home/hello/lib    -lworld

上面这句表示在编译hello.c时:

-I /home/hello/include,表示将/home/hello/include目录作为第一个寻找头文件的目录,寻找的顺序是:/home/hello/include–>/usr/include–>/usr/local/include

也就是指定优先查找的目录,找不到的话查找默认目录
-L /home/hello/lib,表示将/home/hello/lib目录作为第一个寻找库文件的目录, 寻找的顺序是:/home/hello/lib–>/lib–>/usr/lib–>/usr/local/lib

同上,也是指定优先查找的目录
-l word , 表示在库文件路径中寻找动态链接库文件libword.so(也就是文件名去掉前缀和后缀所代表的库文件),如果加上编译选项-static,表示寻找静态链接库文件,也就是libword.a
对于第三方提供的动态链接库(.so),一般将其拷贝到一个lib目录下(/usr/local/lib),或者使用-L来指定其所在目录, 然后使用-l来指定其名称

linux下的动态库的查找路径和window不同,window先查找当前目录再找系统配置的目录,linux查找系统配置的目录,而不自动找当前目录。

lib 目录
如果没有把动态链接库的放到系统lib库目录下(例如说是 /usr/local/lib )
临时启动程序前可将临时目录放到 LD_LIBRARY_PATH 里。
用命令 export 来添加,但是登出后就失效

export  LD_LIBRARY_PATH=/XXX
export  LD_LIBRARY_PATH=LD_LIBRARY_PATH:/XXX 

还有一种修改配置文件的方法,

            1. /etc/ld.so.conf下面加一行库所在的目录 /usr/local/mysql/lib

            2. 保存过后ldconfig一下(ldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连接和缓存文件.缓存文件默认为/etc/ld.so.cache,此文件保存已排好序的动态链接库名字列表.)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值