在sudo中加载共享库时的错误
error while loading shared libraries in sudo
我在https://github.com/openyou/libomron/blob/master/master/readme.asciidoc 上阅读了文档
执行:
cd /
sudo find . | grep libomron.so.0.9.0
结果:
./home/splincode/Develop/omron/c++_modules/libomron/omron-build/lib/
okey,我在全球路径中添加库
LD_LIBRARY_PATH=/usr/local/lib
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/splincode/Develop/omron/c++_modules/libomron/omron-build/lib/
export LD_LIBRARY_PATH
然后是工作:
cd ~/Develop/omron/usr/local/bin/
./omron_790IT_test
但是,不访问硬件,结果
Found 1 omron 790ITs
Cannot open omron 790IT!
结果,我开始以管理员的身份运行,但他看不到图书馆,该怎么办?
sudo ./omron_790IT_test
结果:
./omron_790IT_test: error while loading shared libraries: libomron.so.0.9.0: cannot open shared object file: No such file or directory
./omron_790IT_test: error while loading shared libraries
这是因为默认情况下的sudo
dik 而不是传播环境变量;这样做有安全风险。
您可以通过以下三种方式之一处理:
-
以不要求设置
LD_LIBRARY_PATH
的方式链接您的程序(这是最好的方法)。在您的情况下,链接命令应该看起来像这样:
gcc -o omron_790IT_test ... -Wl,-rpath=/home/splincode/Develop/omron/c++_modules/libomron/omron-build/lib
-
在sudo进程中明确设置通缉的环境变量:
sudo env LD_LIBRARY_PATH=... ./omron_790IT_test
-
要求
sudo
将所有环境变量传播到根过程中:sudo -E ./omron_790IT_test
sudo --preserve-env ./omron_790IT_test
相关文章:
- 加载共享库时C++错误:libopencv_ximgproc.so.4.4
- 共享内存:MapViewOfFile 返回错误 5
- 为 Python 构建共享库C++时出现分段错误
- 多线程减慢程序速度:无错误共享,无互斥锁,无缓存未命中,无小工作量
- 当 2 个线程共享同一物理内核时,具有错误共享的易失性增量在发布中的运行速度比在调试中慢
- c++ 链接器错误"针对'.rodata.str1.1'的重新定位R_X86_64_32"链接 CXX 共享库 libsrt.so
- 共享指针取消引用错误
- 避免错误共享以提高性能
- 在共享内存中插入映射映射时出现编译器错误
- OpenMP 环路阵列访问中的错误共享
- OpenMP并行区域中的std::vector push_back会导致错误共享吗
- Eigen & OpenMP : 由于错误共享和线程开销,没有并行化
- 多线程效率低下:调试错误共享
- boost::detail::spinlock_pool中的错误共享
- 错误共享和原子变量
- 缓存行、错误共享和对齐
- CUDA错误:共享数据太多(0x4018字节,最大0x4000):额外的0x18字节从哪里来
- C++中的错误共享
- c++使用' .reserve() '填充' std::vector '作为防止多线程缓存无效和错误共享的一种方
- 保护成员变量的错误共享