我有一个编译器的源代码,我正在构建这样的编译器:
/path/to/srcdir/configure --prefix=/path/to/installdir
make
make install
我想将生成的“installdir”分发到其他机器,目的是任何人都可以使用编译器二进制文件而无需经过 3 阶段构建过程(我只是将 installdir 包含在我的分发 tarball 中)。
为了测试,我将 installdir 复制到另一个用户下的另一台机器上,然后尝试使用我刚刚复制的二进制文件编译测试程序,如下所示:
installdir/bin/ucc -mp -o test load_bl.c
然后,我收到如下错误:
cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/include: Permission denied
cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/lib/gcc/x86_64-redhat-linux/4.2.0/include: Permission denied
cc1: error: /home/sghosh/normalbuild/installdir/open64-gcc-4.2.0/x86_64-redhat-linux/include: Permission denied
这/home/sghosh/normalbuild/install
是在我的构建机器上指定的--prefix
内容configure
。installdir/bin/ucc
二进制文件需要 installdir 下的目录中的一些文件,open64-gcc-4.2.0
但由于这是 中提到的路径--prefix
,所以它仍在那里寻找它,我希望它在当前机器中查看相同的目录。仅供参考,我没有 sudo/root 权限。
我如何想出一个可以在任何机器上工作的二进制发行版(构建一次,在任何地方使用),而不是--prefix
在这种情况下查看初始路径?
我在超级用户中遇到过类似的问题,但是由于发生了很多编辑并且我没有对新问题做出回应,所以我在这里写了它。