发布网友 发布时间:2022-04-23 21:04
共3个回答
热心网友 时间:2023-08-18 22:09
首先你要确认profile这个文件时再哪个目录执行的,./这个目录是一直变化的,如果你在/root下面执行profile, 你的.so目录就会是/root,如果你在/etc下面执行,那么就会变成/root.系统开机的时候应该是在特定的目录下执行了profile去配置文件
要解决该问题,你要么用绝对路径,要么就自己写一个脚本放到对应的目录,然后在该目录下执行该脚本。
热心网友 时间:2023-08-18 22:09
看你用的是bash,可能ubuntu里的bash不会自动source /etc/profile,所以你将那条export命令放在~/.bashrc里试试。另外,LD_LIBRARY_PATH=./ 是不合适的,这里应该用绝对路径。追问我是程序员,我就是希望我的可执行文件与So等库文件放在一起时SHELL可以自动找到并加载 。我也希望我的当前目录是变化 的,所以我使用相对路径。请问相对路径难道不行吗?
追答你自己的so文件总得放在某个或者某几个固定的path里吧,也就是说不会经常变动,那么你就直接指定绝对路径好了。
bash启动的时候source /etc/profile,这个进程有自己的“默认工作目录”(每个进程都有自己的默认工作目录),但我觉得此时这个工作目录应该不是你的"~"(home path),所以你写的那条export用相对路径不会生效。而当你手动source /etc/profile的时候你是处在合理的工作目录中的(你手动cd就能去合适的目录),所以可以生效。
如果你的so目录有很多个,那么只好在.bashrc里指定多个目录给LD_LIBRARY_PATH变量了(这样也有可能造成混乱,特别是命名重复时)。建议可以临时在shell里用export设置一下,随用随开。
热心网友 时间:2023-08-18 22:10
rm掉,系统会自动重新生成。
或者你可以看看同目录底下有没有profile.bak,profile.backup,profile.******
如果有,直接重命名覆盖源文件。