Мы установили GCC 6.2.0 вручную на компьютере Scientific Linux. Компиляция приложения C++ кажется хорошо, но мы получаем много undefined references
к CXX11 на увязывание времениCXX11 Неопределенные ссылки с GCC 6.2.0
file.cpp:(.text+0x16cb): undefined reference to `std::__cxx11::list<void*, std::allocator<void*> >::list(std::__cxx11::list<void*, std::allocator<void*> > const&)'
Мы знаем о double ABI issue но компиляции с -D_GLIBCXX_USE_CXX11_ABI=0
не имеют никакого значения. Какие у нас есть другие варианты?
UPDATE
Конфигурация Cmake выглядит следующим образом:
-- The C compiler identification is GNU 6.2.0
-- The CXX compiler identification is GNU 6.2.0
-- Check for working C compiler: /opt/GNU/gcc-6.2.0/bin/gcc
-- Check for working C compiler: /opt/GNU/gcc-6.2.0/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /opt/GNU/gcc-6.2.0/bin/g++
-- Check for working CXX compiler: /opt/GNU/gcc-6.2.0/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
Это сборник линия file.cpp
gcc-6.2.0/bin/g++ -O3 -fopenmp -DNO_HDF5 -D_GLIBCXX_USE_CXX11_ABI=0 -I./include -I/opt/mpich/3.2/include -o file.cpp.o -c file.cpp
и связь (где он на самом деле терпит неудачу)
gcc-6.2.0/bin/g++ -O3 -fopenmp -DNO_HDF5 -D_GLIBCXX_USE_CXX11_ABI=0 main.cpp.o -o ASTEP -rdynamic libMainASTEPlib.a -lhdf5_hl -lhdf5 -lz -lm -lhdf5_hl -lhdf5 -lz -lm /opt/mpich/3.2/lib/libmpicxx.so /opt/mpich/3.2/lib/libmpi.so -Wl,-rpath,/opt/mpich/3.2/lib
Кроме того, MPICH 3,2 был построен новый компилятор (GCC 6.2.0)
* Как * вы связываете свою программу? С 'ld'? С 'gcc'? С 'g ++'? –
Удалите файл объекта и перекомпилируйте. –
При установке gcc gcc предпочитает предполагать, что его библиотеки собираются установить в/usr/lib (64) ?, независимо от того, где вы на самом деле собираете gcc. Таким образом, ваш код оказывается связанным с стандартными библиотеками системы. К сожалению, я забыл детали gory о том, как избить дерьмо из конфигурации gcc, чтобы правильно настроить связь с его библиотеками, где вы их устанавливаете. Вы должны понять это, как я сделал ~ 10 лет назад ... Если бы я вспомнил все это, я бы опубликовал ответ. –