У меня есть следующие программы:C++ - G ++ ссылки от неправильного stdlibC++
#include <iostream>
int main()
{
std::cerr << "hejsan" << std::endl;
}
компилировать его с помощью следующей команды:
г ++ main.cpp -Wl, -rpath,/приложение/vbuild /RHEL6-x86_64/gcc/6.2.0/lib -std = C++ 11
Идущие возвращается LDD:
ldd a.out
linux-vdso.so.1 => (0x00007ffe8f1eb000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00000032f9e00000)
libm.so.6 => /lib64/libm.so.6 (0x00000032f6600000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00000032f8a00000)
libc.so.6 => /lib64/libc.so.6 (0x00000032f5a00000)
/lib64/ld-linux-x86-64.so.2 (0x00000032f5600000)
Как вы можете видеть, что выбирает libstdC++ внутри /usr/lib64/libstdc++.so.6
Установка LD_DEBUG = ЛИЭС показывает следующее:
792127: find library=libstdc++.so.6 [0]; searching
792127: search path=/app/vbuild/RHEL6-x86_64/gcc/6.2.0/lib/tls/x86_64:/app/vbuild/RHEL6-x86_64/gcc/6.2.0/lib/tls:/app/vbuild/RHEL6-x86_64/gcc/6.2.0/lib/x86_64:/app/vbuild/RHEL6-x86_64/gcc/6.2.0/lib (RPATH from file ./a.out)
792127: trying file=/app/vbuild/RHEL6-x86_64/gcc/6.2.0/lib/tls/x86_64/libstdc++.so.6
792127: trying file=/app/vbuild/RHEL6-x86_64/gcc/6.2.0/lib/tls/libstdc++.so.6
792127: trying file=/app/vbuild/RHEL6-x86_64/gcc/6.2.0/lib/x86_64/libstdc++.so.6
792127: trying file=/app/vbuild/RHEL6-x86_64/gcc/6.2.0/lib/libstdc++.so.6
792127: search cache=/etc/ld.so.cache
792127: trying file=/usr/lib64/libstdc++.so.6
Это STDLIB я хочу его используйте: try file =/app/vbuild/RHEL6-x86_64/gcc/6.2.0/lib/libstdC++. so.6, но почему-то похоже, что кеш используется вместо этого. У меня нет корневого доступа и я ничего не могу удалить. Как я могу это решить?
Это проблема, потому что я использую это против более сложного кода, который требует более высокой версии GLIBCXX, чем предоставляет stdlib внутри usr/lib64.
Любая помощь приветствуется
Вам также необходимо связаться с нужной библиотекой. Попробуйте что-то вроде 'g ++ main.cpp /app/vbuild/RHEL6-x86_64/gcc/6.2.0/lib/libstdc++.so ...' –
Вы уверены, что используете правильный компилятор? Что говорит 'g ++ -version'? –
И какой результат вы получаете, когда пытаетесь запустить 'ls -l /app/vbuild/RHEL6-x86_64/gcc/6.2.0/lib/libstdC++. So.6' –