[转帖]Linux下的两个环境变量:LIBRARY_PATH和LD_LIBRARY_PATH使用

linux,两个,环境变量,library,path,ld,使用 · 浏览次数 : 0

小编点评

**LIBRARY_PATH和LD_LIBRARY_PATH环境变量** **LIBRARY_PATH** * 用于在程序编译期间查找动态链接库的路径。 * 可以在 CMake 中设置 LIBRARY_PATH。 * 类似于 `LD_LIBRARY_PATH`,用于在程序加载运行期间查找动态链接库。 **LD_LIBRARY_PATH** * 用于在程序加载运行期间查找动态链接库的路径。 * 除了系统默认路径之外的其他路径。 * 可以在 CMake 中设置 LD_LIBRARY_PATH。 * 类似于 `LIBRARY_PATH`,用于在程序编译期间查找动态链接库。 **示例设置** ```bash # LIBRARY_PATH export LIBRARY_PATH=./lib:$LIBRARY_PATH # LD_LIBRARY_PATH export LD_LIBRARY_PATH=./lib:/usr/lib:$LD_LIBRARY_PATH ``` **注意** * `LD_LIBRARY_PATH` 优先级高于 `LIBRARY_PATH`。 * 可以在 `LD_LIBRARY_PATH` 中添加多个路径。 * 使用 `-L` 和 `-l` 选项时,`LD_LIBRARY_PATH` 的路径会覆盖 `LIBRARY_PATH` 的路径。

正文

1.LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下:
LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。设置方法如下(其中,LIBDIR1和LIBDIR2为两个库目录):
export LIBRARY_PATH=LIBDIR1:LIBDIR2:$LIBRARY_PATH
LD_LIBRARY_PATH环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。设置方法如下(其中,LIBDIR1和LIBDIR2为两个库目录):
export LD_LIBRARY_PATH=LIBDIR1:LIBDIR2:$LD_LIBRARY_PATH
例如:将一个环形队列变成动态库并使用的方法(见学习Cmake的t3_shareLib例子):
(1).执行在build下执行cmake .. 或者 cmake -DCMAKE_INSTALL_PREFIX=/tmp/t3/usr .. 会在build/lib下生成libRingQueue.so ;
(2).将工程目录下lib/RingQueue.h和build/lib下生成libRingQueue.so复制到useLib下 ;
(3).在useLib下执行g++ -std=c++11 -o main main.cpp -L. -lRingQueue 生成main ;
(4).注意-L.表示库文件路径在当前路径下,-lRingQueue指定连接的库名,不用带前缀lib和后缀.so ,也可以-Wl,rpath=<lib_dir> 指定运行期共享库的路径;
(5).添加库的连接路径: export LD_LIBRARY_PATH=./ ,然后./main执行。
(6).GCC的-Wl作用: 通过指定 -Wl,--as-needed 选项,链接过程中,链接器会检查所有的依赖库,没有实际被引用的库,不再写入可执行文件头。
(7).-Wall选项意思是编译后显示所有警告。
(8).-W选项类似-Wall,会显示警告,但是只显示编译器认为会出现错误的警告。在编译一些项目的时候可以-W和-Wall选项一起使用.

2.区域锁: #define MUTEX(a) boost::mutex::scoped_lock lock(a);
3.用prctl给线程命名:  用prctl给进程内其它线程命名的接口prctl(PR_SET_NAME, (unsigned long)"testTheread"); 命名为testTheread;

文章知识点与官方知识档案匹配,可进一步学习相关知识
CS入门技能树Linux入门初识Linux26798 人正在系统学习中

与[转帖]Linux下的两个环境变量:LIBRARY_PATH和LD_LIBRARY_PATH使用相似的内容:

[转帖]Linux下的两个环境变量:LIBRARY_PATH和LD_LIBRARY_PATH使用

1.LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下: LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。设置方法如下(其中,LIBDIR1和LIBDI

[转帖]ls命令

ls(list) 命令可以说是Linux下最常用的命令之一 #ls -l;列出文件的详细信息 #ll 以上两个命令一样,ll是ls -l的简写 #ls -al;列出目录下的所有文件,包括以 . 开头的隐藏文件。 #ls -R ;列出所有子目录下的文件 #ls -lh ;列出文件的大小,单位为K #l

[转帖]系统性能测试工具

https://cloud.tencent.com/developer/article/2129549 0x01 处理器性能测试 stress 命令 - 系统压力基础测试(拷机) 描述:Stress/Stress-NG是Linux下两个常用的系统级压力测试工具,stress命令简单易用stress-

[转帖]《Linux性能优化实战》笔记(三)—— CPU 上下文切换(下)

上篇介绍了三种CPU 上下文切换以及它们可能造成的问题和原因,这一篇来看看在系统中如何发现CPU 上下文切换问题。 一、 查看上下文切换情况 主要使用两个命令:vmstat以及之前用过的pidstat。 1. vmstat # 每隔5秒输出1组数据vmstat 5 procs memory swap

[转帖]Systemd 指令

一、由来 历史上,Linux 的启动一直采用init进程。 下面的命令用来启动服务。 $ sudo /etc/init.d/apache2 start# 或者$ service apache2 start 这种方法有两个缺点。 一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下

[转帖]软中断

https://www.jianshu.com/p/78f9dcd2a4b6 软中断:为了处理中断处理程序执行过长和中断丢失的问题,linux将中断处理过程分成两个阶段,也就是上半部和下半部: 上半部:用来快速处理中断,它在中断禁止模式下运行,主要处理跟硬件紧密相关的或跟时间敏感的工作,直接处理硬件

[转帖]linux 下 {}大括号的用法

我们平时使用Linux的时候经常遇到这样一个问题,举例有这样一种情况:执行命令 $ cp /etc/apt/sources.list /etc/apt/sources.list.bak 这里面有个问题,明明 /etc/apt/sources 这几个字都是一样的,为什么要打两遍?这样的还算短了,要是更

[转帖]iptables命令详解和举例(完整版)

1、防火墙概述 防火墙,其实说白了讲,就是用于实现Linux下访问控制的功能的,它分为硬件的或者软件的防火墙两种。无论是在哪个网络中,防火墙工作的地方一定是在网络的边缘。而我们的任务就是需要去定义到底防火墙如何工作,这就是防火墙的策略,规则,以达到让它对出入网络的IP、数据进行检测。 目前市面上比较

[转帖]linux下 进程io队列,IO队列和IO调度

IO体系概览 先看看本文主题IO调度和IO队列处于整个IO体系的哪个位置,这个IO体系是非常重要的,了解IO体系我们可以对整个IO过程有个全面的认识。虽然一下两下并不清楚IO体系各个部分的细节,但是我们总是能从这儿找到脉络。知道什么问题在什么位置,这个是解决问题的时候最关键的。任何所谓的专家都不太可

[转帖]推荐一款Linux下监控CPU温度、频率、功耗的工具:s-tui

https://aijishu.com/a/1060000000216862 这两天我手头正好有一台配置较高的工作站,2颗Xeon Gold 6258R 28核CPU、1TB(1024GB)内存,跑了下功耗压测。 在Windows下我习惯用AIDA64、Hwinfo这些监控软件。Linux下能看CP