LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2185|回复: 8

help:当前用户编译的交叉编译器在自己的用户正常,其他用户下就不能使用

[复制链接]
发表于 2007-11-16 14:40:12 | 显示全部楼层 |阅读模式
用户A下用crosstool编译的,用户名A下运行,一切正常,但在用户名B下,运行命令
[B@buildFactory ~]mipsel-linux-gcc test.c
/home/A/opt/crosstool/gcc-3.2.3-glibc-2.2.5/mipsel-linux/include: Permission denied
/home/A/opt/crosstool/gcc-3.2.3-glibc-2.2.5/mipsel-linux/lib/gcc-lib/mipsel-linux/3.2.3/include: Permission denied
/home/A/opt/crosstool/gcc-3.2.3-glibc-2.2.5/mipsel-linux/lib/gcc-lib/mipsel-linux/3.2.3/../../../../mipsel-linux/sys-include: Permission denied
/homeA/opt/crosstool/gcc-3.2.3-glibc-2.2.5/mipsel-linux/lib/gcc-lib/mipsel-linux/3.2.3/../../../../mipsel-linux/include: Permission denied

[B@buildFactory ~]mipsel-linux-gcc -v
Reading specs from /home/tianna/opt/gcc-3.2.3-glibc-2.2.5/mipsel-linux/bin/../lib/gcc-lib/mipsel-linux/3.2.3/specs
Configured with: /home/A/crosstool-0.38/build/mipsel-linux/gcc-3.2.3-glibc-2.2.5/gcc-3.2.3/configure --target=mipsel-linux --host=i686-host_pc-linux-gnu --prefix=/home/A/opt/crosstool/gcc-3.2.3-glibc-2.2.5/mipsel-linux --with-headers=/home/A/opt/crosstool/gcc-3.2.3-glibc-2.2.5/mipsel-linux/mipsel-linux/include --with-local-prefix=/homeA/opt/crosstool/gcc-3.2.3-glibc-2.2.5/mipsel-linux/mipsel-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 3.2.3

我的想法是本地库的影响,但是我不知道怎么消除

请大虾们帮帮忙,感谢!
发表于 2007-11-27 08:27:52 | 显示全部楼层
权限问题,include在其他用户没有读权限,使用chmod更改
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-3 10:59:25 | 显示全部楼层
谢谢LS,确实是这个问题!也就是说用ROOT用户编译就完全不会出问题了,可是非ROOT用户就不能编译出可供其他用户使用的编译器了吗?我不是很清楚,请教了
回复 支持 反对

使用道具 举报

发表于 2007-12-3 12:16:21 | 显示全部楼层
如果只是碰到像现在这样某些目录或文件的权限不足的情况, 那么可以在工具链制作好后执行如下的命令

  1. find /path/to/your/toolchain -type d chmod a+rx {} \;
  2. find /path/to/your/toolchain -type f chmod a+r {} \;
复制代码

这将给所有用户必要的权限

然后建议再执行

  1. sudo chown -R root.root /path/to/your/toolchain
复制代码

这会将工具链中所有文件及目录的所有者改成 root, 符合一般习惯, 也可以避免日后的误操作破坏工具链
回复 支持 反对

使用道具 举报

发表于 2007-12-6 23:09:11 | 显示全部楼层
建议尽量以非root用户进行操作,少用全局环境变量。这样可以有效地减少运行环境的干扰。比如可以通过在受限用户的shell环境里设置C_INCLUDE_PATH\LIBRARY_PATH\LD_LIBRARY_PATH等环境变量来有效地设置临时的编译环境。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-21 17:21:08 | 显示全部楼层
Post by pilgrim_kevin;1792529
建议尽量以非root用户进行操作,少用全局环境变量。这样可以有效地减少运行环境的干扰。比如可以通过在受限用户的shell环境里设置C_INCLUDE_PATH\LIBRARY_PATH\LD_LIBRARY_PATH等环境变量来有效地设置临时的编译环境。

先谢了  全局环境变量?!  嗯,之前考虑过这种问题的,后来避开全局环境变量后,仍是如题的问题,每一点效果。。。
另外,我一直是普通用户全限。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-12-21 17:24:39 | 显示全部楼层
谢谢!
可是这样需要root权限啊,不知道在普通用户下能不能编出供其他用户使用的交叉编译链?
回复 支持 反对

使用道具 举报

发表于 2007-12-22 22:57:12 | 显示全部楼层
Post by 北在北方;1798296
谢谢!
可是这样需要root权限啊,不知道在普通用户下能不能编出供其他用户使用的交叉编译链?


在真正必要的时候,适用sudo。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-2 11:51:54 | 显示全部楼层
Post by pilgrim_kevin;1798773
在真正必要的时候,适用sudo。
呵呵 ok了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表