linux下动态库/静态库 链接路径设置问题
2014-01-06 17:37
405 查看
g++/gcc 连接 so动态库或者 .a静态库时,需要设置这些动态库的路径, 例如:
g++ -o main main.cpp -L./lib -ldymamic -lpthread -lrt 这些是设置到哪个目录下去查找关联的动态库。 如果在-L目录下面找不到相应的动态库,就会到 LD_LIBRARY_PATH 的目录下去找,如果还找不到,就会到/usr/lib 目录下去找。
而如果要关联静态库,例如: g++ -o main main.cpp -L./lib -ldymamic ./lib/libstatic.a 。 请注意这个静态库的路径。 对于静态库,是需要详细标明这个静态库的路径的, 因为-L后面设置的路径,对于静态库来说是无效的。
现在谈另外一个问题:
g++ -o main main.cpp -L./lib -ldymamic -lpthread -lrt 编译成功后, ./main 运行程序会报错, 提示找不到 libdymamic.so动态库。 因为使用这种方式,需要额外的设置:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./lib ,之后运行main就可以正常运行了。
当然,你也可以直接这样写:
g++ -o main main.cpp /home/****/libdynamic.so -lpthread -lrt , 直接写动态库的绝对路径。 这样就不需要设置LD_LIBRARY_PATH。 但这样有一个缺陷:
这个so必须放在绝对路径下,不能放到其他地方。 这种写法很不好,不提倡。
动态库搜索路径分两种,一种是链接时候的搜索路径,一种是运行时期的搜索路径。像前面提到的 -L./lib
是属于链接时期的搜索路径,即给ld程序提供的编译链接时候寻找动态库路径;而 LD_LIBRARY_PATH则既属于链接期搜索路径,又属于运行时期的搜索路径。
g++ -o main main.cpp -L./lib -ldymamic -lpthread -lrt 这些是设置到哪个目录下去查找关联的动态库。 如果在-L目录下面找不到相应的动态库,就会到 LD_LIBRARY_PATH 的目录下去找,如果还找不到,就会到/usr/lib 目录下去找。
而如果要关联静态库,例如: g++ -o main main.cpp -L./lib -ldymamic ./lib/libstatic.a 。 请注意这个静态库的路径。 对于静态库,是需要详细标明这个静态库的路径的, 因为-L后面设置的路径,对于静态库来说是无效的。
现在谈另外一个问题:
g++ -o main main.cpp -L./lib -ldymamic -lpthread -lrt 编译成功后, ./main 运行程序会报错, 提示找不到 libdymamic.so动态库。 因为使用这种方式,需要额外的设置:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:./lib ,之后运行main就可以正常运行了。
当然,你也可以直接这样写:
g++ -o main main.cpp /home/****/libdynamic.so -lpthread -lrt , 直接写动态库的绝对路径。 这样就不需要设置LD_LIBRARY_PATH。 但这样有一个缺陷:
这个so必须放在绝对路径下,不能放到其他地方。 这种写法很不好,不提倡。
动态库搜索路径分两种,一种是链接时候的搜索路径,一种是运行时期的搜索路径。像前面提到的 -L./lib
是属于链接时期的搜索路径,即给ld程序提供的编译链接时候寻找动态库路径;而 LD_LIBRARY_PATH则既属于链接期搜索路径,又属于运行时期的搜索路径。
相关文章推荐
- linux命令tail
- Linux常用命令
- the most beautiful media player on the linux platform.
- Expands disk volume on Linux 扩展虚拟的逻辑磁盘空间
- CentOS 5.5下安装rsync笔记
- linux系统修复之grub损坏
- Linux cat命令详解
- Linux 上的高可用中间件
- 实战kvm
- Linux内核配置系统浅析
- linux 修改系统时间并同步到硬件时钟
- linux内核态与用户态通信方式
- linux计划任务之crontab
- Linux下安装jdk
- 如何在Linux上安装和配置commo lisp环境
- linux下SSH远程连接服务慢解决方案
- Linux电子邮件命令mail
- 【转载】 嵌入式linux内核及根文件系统的制作过程
- U14Linux的帐号与用户组
- Linux小知识