【问题标题】:Run GCC on SUSE from separated folder从单独的文件夹在 SUSE 上运行 GCC
【发布时间】:2018-08-17 02:15:01
【问题描述】:

我在 SUSE 11.4 中没有 root 权限。我需要使用gcc 而不是系统附带的(4.3)。我要使用的(6.2)在不同的文件夹中分开:/path/to/gcc-6.2.0

为了避免将来可能出现的问题,我做了以下操作:

export LD_LIBRARY_PATH=/lib:/lib64:/path/to/gcc-6.2.0/lib:/path/to/gcc-6.2.0/lib64:/usr/lib:/usr/lib64:$LD_LIBRARY_PATH

~ 文件夹中,我创建了一个hello_world.cpp 文件并运行以下内容:

/path/to/gcc-6.2.0/bin/g++ hello_world.cpp -o hw

然后我得到了这个错误:

/path/to/gcc-6.2.0/libexec/gcc/x86_64-pc-linux-gnu/6.2.0/cc1plus: error while loading shared libraries: libmpc.so.3: cannot open shared object file: No such file or directory

然后,我追上了libmpc.so.3。我看到我依赖于libgmp.so.10:我去了这个site,在~ 文件夹上下载了.rpmwget 的文件并运行了这个命令:

rpm -ivh -r /home/unix/me/foo libgmp10-32bit-6.1.2-2.11.x86_64.rpm

得到这个错误:

error: Failed dependencies:
    /bin/sh is needed by libgmp10-32bit-6.1.2-2.11.x86_64
    libc.so.6 is needed by libgmp10-32bit-6.1.2-2.11.x86_64
    libc.so.6(GLIBC_2.0) is needed by libgmp10-32bit-6.1.2-2.11.x86_64
    libc.so.6(GLIBC_2.1.3) is needed by libgmp10-32bit-6.1.2-2.11.x86_64
    libc.so.6(GLIBC_2.3) is needed by libgmp10-32bit-6.1.2-2.11.x86_64
    libc.so.6(GLIBC_2.3.4) is needed by libgmp10-32bit-6.1.2-2.11.x86_64
    libc.so.6(GLIBC_2.4) is needed by libgmp10-32bit-6.1.2-2.11.x86_64
    libc.so.6(GLIBC_2.7) is needed by libgmp10-32bit-6.1.2-2.11.x86_64

我不知道为什么libc.so.6 错误,因为它在/usr/lib 文件夹中(在我对LD_LIBRARY_PATH var 执行的第一个导出命令中设置)。对于/bin/sh 错误,我运行/bin/sh,设置export SHELL=/bin/sh,然后再次运行(现在使用--nodeps):

rpm -ivh --nodeps -r /home/unix/me/foo libgmp10-32bit-6.1.2-2.11.x86_64.rpm

现在出现这个错误:

error: unpacking of archive failed on file /usr/lib/libgmp.so.10;5aa15ea0: cpio: symlink failed - Permission denied

注意那里有一个Permission denied,我想那是因为我不能在/usr/lib 文件夹上写字。也许改变这个文件夹,在其他地方解压......如果可能的话,怎么做?

好吧,我很迷茫......我是所有这些东西的新手。

问:我如何使用这个gcc-6.2.0


只是一个信息,ldd 命令cc1plus

linux-vdso.so.1 =>  (0x00007fff987bc000)
libmpc.so.3 => not found
libmpfr.so.4 => not found
libgmp.so.10 => not found
libdl.so.2 => /lib64/libdl.so.2 (0x00002b782f503000)
libstdc++.so.6 => /path/to/gcc-6.2.0/lib64/libstdc++.so.6 (0x00002b782f708000)
libm.so.6 => /lib64/libm.so.6 (0x00002b782fa91000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002b782fd0a000)
libc.so.6 => /lib64/libc.so.6 (0x00002b782ff22000)
/lib64/ld-linux-x86-64.so.2 (0x00002b782f2e1000)

lagcc-6.2.0/bin 上的命令:

drwxr-xr-x 2 pbsadmin pbsusers    4096 Dec 15  2016 .
drwxr-xr-x 8 pbsadmin pbsusers    4096 Dec 15  2016 ..
-rwxr-xr-x 4 pbsadmin pbsusers 2868174 Dec 15  2016 c++
-rwxr-xr-x 1 pbsadmin pbsusers 2862280 Dec 15  2016 cpp
-rwxr-xr-x 4 pbsadmin pbsusers 2868174 Dec 15  2016 g++
-rwxr-xr-x 3 pbsadmin pbsusers 2859868 Dec 15  2016 gcc
-rwxr-xr-x 2 pbsadmin pbsusers   67083 Dec 15  2016 gcc-ar
-rwxr-xr-x 2 pbsadmin pbsusers   67067 Dec 15  2016 gcc-nm
-rwxr-xr-x 2 pbsadmin pbsusers   67087 Dec 15  2016 gcc-ranlib
-rwxr-xr-x 1 pbsadmin pbsusers 1666022 Dec 15  2016 gcov
-rwxr-xr-x 1 pbsadmin pbsusers 1673624 Dec 15  2016 gcov-tool
-rwxr-xr-x 4 pbsadmin pbsusers 2868174 Dec 15  2016 x86_64-pc-linux-gnu-c++
-rwxr-xr-x 4 pbsadmin pbsusers 2868174 Dec 15  2016 x86_64-pc-linux-gnu-g++
-rwxr-xr-x 3 pbsadmin pbsusers 2859868 Dec 15  2016 x86_64-pc-linux-gnu-gcc
-rwxr-xr-x 3 pbsadmin pbsusers 2859868 Dec 15  2016 x86_64-pc-linux-gnu-gcc-6.2.0
-rwxr-xr-x 2 pbsadmin pbsusers   67083 Dec 15  2016 x86_64-pc-linux-gnu-gcc-ar
-rwxr-xr-x 2 pbsadmin pbsusers   67067 Dec 15  2016 x86_64-pc-linux-gnu-gcc-nm
-rwxr-xr-x 2 pbsadmin pbsusers   67087 Dec 15  2016 x86_64-pc-linux-gnu-gcc-ranlib

【问题讨论】:

  • 路径前面不需要.吗? ./path/to/gcc-6.2.0/bin/g++ hello_world.cpp -o hw 请注意第一个 / 前面的 .
  • 没有。此路径从根目录开始。如果我把.,它没有找到g++
  • 对于我认为的可执行文件. 是强制的,. 表示运行这个可执行文件,在这种情况下. 不表示这个目录。
  • 好吧,当我不带点运行时,可执行文件会运行。使用点,我得到No such file or directory
  • 执行cd /path/to/gcc-6.2.0/bin/; la 并在此处发布输出。

标签: c++ gcc rpm suse


【解决方案1】:

我确实使用 OpenSUSE,但我很少使用 RPM。也许这可以帮助你:

rpm  -ivh -nodeps --prefix=/some/other/path/ libgmp10-32bit-6.1.2-2.11.x86_64.rpm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多