我阅读了https://github.com/openyou/libomron/blob/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
并没有传播环境变量; 这样做会带来安全风险。
您可以通过以下三种方式之一来处理:
在一个单向链接你的程序并不需要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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句