首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么逻辑应用程序除了直接在sudo下不起作用?

为什么逻辑应用程序除了直接在sudo下不起作用?
EN

Unix & Linux用户
提问于 2016-03-08 05:53:55
回答 1查看 68关注 0票数 0

我正在尝试运行逻辑应用程序来与我的逻辑分析器对话,并且在我在驱动程序下安装规则之后,我观察了下面的行为。

代码语言:javascript
复制
./Logic 
./Logic: cpp_libs/libc.so.6: version `GLIBC_2.18' not found (required by /usr/lib/x86_64-linux-gnu/libstdc++.so.6)

sudo bash
./Logic 
./Logic: cpp_libs/libc.so.6: version `GLIBC_2.18' not found (required by /usr/lib/x86_64-linux-gnu/libstdc++.so.6)

sudo ./Logic 
# Application runs

造成这种奇怪行为的原因是什么?

我正在运行Ubuntu 14.04。

EN

回答 1

Unix & Linux用户

发布于 2016-03-09 01:07:52

行为差异的一个合理解释是,工作命令和非工作命令加载不同的库,因为它们对库搜索路径LD_LIBRARY_PATH有不同的设置。还有其他环境变量可能很重要,但可能性较小,如LD_PRELOADPATH (如果./Logic是依赖于某些可执行文件的脚本,则错误消息与此不一致)等等。

为什么从bash的交互式实例调用命令不起作用,但直接从sudo调用命令的原因,一个合理的解释是,您正在.bashrc中设置这个环境,这是一个交互式bash实例运行的文件。运行sudo可以清除几乎所有的环境变量,因此sudo ./Logic可以工作;但是sudo bash后面跟着./Logic不能工作,因为运行bash会再次设置这些变量。

中设置环境变量。.profile(在会话开始时执行),而不是在.bashrc。您的症状是随着.bashrc中环境变量的变化而出现的问题之一。

LD_LIBRARY_PATH的设置可能根本不存在于安装文件中。添加一个隐藏系统库的目录可能是不兼容的一个来源。如果您需要它来运行特定的程序,那么只在运行该程序时设置LD_LIBRARY_PATH (通过外壳包装器,如果您想要自动化它),不要全局设置它。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/268315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档