У меня есть пользовательский построенный gcc-4.7.2
в моей среде. Система gcc равна gcc-4.3.4
.библиотеки, которые существуют в двоичном эльфе RUNPATH, не используются?
Я залатал RUNPATH для бинарных файлов все моего пользовательского ССАГПЗА и разделяемые библиотеки, используя patchelf --set-rpath
Однако, когда я бег ldd
на моем 4.7.2 cc1
он поднимает систему libstdc++
вместо один указал на по RUNPATH:
$ ldd /sdk/x86_64/2.11.1/gcc-4.7.2/libexec/gcc/x86_64-suse-linux/4.7.2/cc1
libcloog-isl.so.1 => /sdk/x86_64/2.11.1/gcc-4.7.2/lib/libcloog-isl.so.1 (0x00007f072dce8000)
...
libc.so.6 => /lib64/libc.so.6 (0x00007f072bfe0000)
--> libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f072bcd5000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f072babe000)
/lib64/ld-linux-x86-64.so.2 (0x00007f072df0d000)
Как можно видеть, RUNPATH задающее gcc-4.7.2
библиотека места:
$ readelf -a /sdk/x86_64/2.11.1/gcc-4.7.2/libexec/gcc/x86_64-suse-linux/4.7.2/cc1 | grep PATH
0x000000000000001d (RUNPATH) Library runpath: \
[/sdk/x86_64/2.11.1/gcc-4.7.2/lib64: \
/sdk/x86_64/2.11.1/gcc-4.7.2/lib: \
/sdk/x86_64/2.11.1/gcc-4.7.2/libexec/gcc/x86_64-suse-linux/lib64: \
/sdk/x86_64/2.11.1/gcc-4.7.2/lib/gcc/x86_64-suse-linux/4.7.2: \
/hostname/sig/lib64: \
/hostname/sig/lib]
Я знаю, что libstdc++.so.6
существует в первой записи в RUNPATH:
$ ls -l /sdk/x86_64/2.11.1/gcc-4.7.2/lib64/libstdc++.so*
lrwxrwxrwx .../sdk/x86_64/2.11.1/gcc-4.7.2/lib64/libstdc++.so -> libstdc++.so.6.0.17
lrwxrwxrwx .../sdk/x86_64/2.11.1/gcc-4.7.2/lib64/libstdc++.so.6 -> libstdc++.so.6.0.17
-rwxr-x--- .../sdk/x86_64/2.11.1/gcc-4.7.2/lib64/libstdc++.so.6.0.17
-rwxr-x--- .../sdk/x86_64/2.11.1/gcc-4.7.2/lib64/libstdc++.so.6.0.17-gdb.py
не имеет LD_LIBRARY_PATH набора в моей среде:
$ echo $LD_LIBRARY_PATH
$
- Почему он не забирает библиотеку, найденную в RUNPATH?
- Как я могу заставить его использовать библиотеки
gcc-4.7.2
?
Привет. Но вы могли бы в принципе исправить 'libppl.so' с' patchelf', чтобы изменить его '' RUNPATH' вместо того, чтобы перестроить его с помощью пользовательского 'gcc'? Или 'gcc' делает какую-то дополнительную неявную магию, которая работает вокруг' RUNPATH'? – xealits