Символ компиляции GCC-5.0 не найден Ожидается в: плоская ошибка пространства имен - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь установить gcc-5.0 из источника на моем OS X 10.7.4 с установленным в Apple gcc-4.2 *1003* и gcc-5.0 и соответствующими версиями зависимостей gcc (gmp,mpfr, mpc) установлены в /usr/local и все они работают нормально. Причина, по которой я пытаюсь (пере) установить gcc-5.0, заключается в том, что я хочу установить его в отдельную папку, такую ​​как /usr/local/gcc-5.0, поэтому скрипт конфигурирования (запускается из пустой папки gcc-5.0-build)

../gcc-5.0-src/configure --prefix=/usr/local/gcc-5.0 --with-gmp=/usr/local/lib --with-mpfr=/usr/local/lib --with-mpc=/usr/local/lib --enable-languages=c,c++

После make и около 1 ГБ скомпилированных файлов я получаю эту ошибку (усеченную)

dyld: Symbol not found: __ZNKSt11logic_error4whatEv
  Referenced from: <my-build-dir>/x86_64-apple-darwin11.4.0/libstdc++-v3/src/.libs/libstdc++.6.dylib
  Expected in: flat namespace

После просмотра многих веб-страниц и сообщений в Stackoverflow я пробовал разные вещи, такие как:

добавление LDFLAGS="-flat_namespace" до ./configure

компиляция с использованием встроенной в Apple gcc-4.2 вместо gcc-5.0

, но, к счастью, я все равно получаю эту ошибку.

Проверка libstdc++.6.dylib

nm -g x86_64-apple-darwin11.4.0/libstdc++-v3/src/.libs/libstdc++.6.dylib | grep  __ZNKSt11logic_error4whatEv

возвращает: U __ZNKSt11logic_error4whatEv, чтобы он содержал соответствующий символ.

otool -hv x86_64-apple-darwin11.4.0/libstdc++-v3/src/.libs/libstdc++.6.dylib

возвращает (усечено) DYLDLINK TWOLEVEL, что означает, что это двухуровневое пространство именlib.

Мои вопросы:

1- В сообщении Expected in: flat namespace означает ли это, что компилятору нужна абсолютно только плоская библиотека пространства имен? Я имею в виду, что абсолютно невозможно использовать это двухуровневое пространство имен lib? После комментария @GM символ не определен в рассматриваемой библиотеке, и это делает отсутствие или присутствие flat namespace неуместным, потому что это содержимое библиотеки, которая вызывает проблему, а не ее тип.

2- Что нужно сделать, чтобы это исправить и скомпилировать gcc-5.0?

Спасибо.

...