我阅读了https://github.com/openyou/libomron/blob/master/README.asciidoc上的文档
执行:
cd /
sudo find . | grep libomron.so.0.9.0
Run Code Online (Sandbox Code Playgroud)
结果:
./home/splincode/Develop/omron/c++_modules/libomron/omron-build/lib/
Run Code Online (Sandbox Code Playgroud)
好的,我在全局路径中添加库
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
Run Code Online (Sandbox Code Playgroud)
然后就是工作了:
cd ~/Develop/omron/usr/local/bin/
./omron_790IT_test
Run Code Online (Sandbox Code Playgroud)
但是,不能在硬件中访问,结果
Found 1 omron 790ITs
Cannot open omron 790IT!
Run Code Online (Sandbox Code Playgroud)
结果我开始以管理员身份运行,却看不到该库,怎么办?
sudo ./omron_790IT_test
Run Code Online (Sandbox Code Playgroud)
结果:
./omron_790IT_test: error while loading shared libraries: libomron.so.0.9.0: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
./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
| 归档时间: |
|
| 查看次数: |
4534 次 |
| 最近记录: |