Запуск gcc 5.2 build на gcc 4.4.7 Red Hat 6.6 - PullRequest
0 голосов
/ 15 февраля 2019

Мы создали исполняемый файл, используя gcc 5.2 (g ++ и --std = c ++ 14, если это имеет значение).

Наш текущий компьютер для развертывания:
$ cat / etc / red *
Red Hat Enterprise Linux Server версии 6.6 (Сантьяго)

Имеет следующий libc:
$ /lib / libc-2.12.so
Скомпилировано в GNU CC версии 4.4.7 20120313 (Red Hat 4.4.7-9).
Скомпилировано в системе Linux 2.6.32 2015-01-19.

Перед запуском этого exe-файла мы убедились, что он будет использовать различные зависимые библиотеки, созданные с помощью gcc5.2.0, которые использовались в процессе сборки.

Однако, как показывает приведенный ниже вывод «lsof -p», все еще используются некоторые библиотеки (в основном все, что в «/ lib64» в первых нескольких строках ниже), которые взяты из сборки gcc 4.4.7,Может ли это быть проблемой?

     NODE NAME
      130 /lib64/ld-2.12.so
      154 /lib64/libc-2.12.so
     8296 /lib64/libdl-2.12.so
     8294 /lib64/libpthread-2.12.so
     1778 /lib64/libm-2.12.so
     8315 /lib64/libz.so.1.2.3
      218 /lib64/libnsl-2.12.so
     5312 /lib64/librt-2.12.so
     5663 /lib64/libnss_files-2.12.so
  4199459 /home/gcc-5.2.0/runtime_libs/libgcc_s.so.1
  4199412 /home/gcc-5.2.0/runtime_libs/libstdc++.so.6
  4199453 /home/gcc-5.2.0/runtime_libs/libboost_regex.so.1.61.0
  4199433 /home/gcc-5.2.0/runtime_libs/libboost_date_time.so.1.61.0
  4199442 /home/gcc-5.2.0/runtime_libs/libboost_filesystem.so.1.61.0
  4199427 /home/gcc-5.2.0/runtime_libs/libboost_system.so.1.61.0
  4199476 /home/gcc-5.2.0/runtime_libs/libboost_thread.so.1.61.0
  4199429 /home/gcc-5.2.0/runtime_libs/libxerces-c-3.0.so
  4199407 /home/gcc-5.2.0/runtime_libs/libACE.so.6.2.0

1 Ответ

0 голосов
/ 16 февраля 2019

Переопределение libstdc++.so.6 с вашей собственной копией может быть проблематичным, поскольку это системная библиотека, и как таковая может использоваться другими системными библиотеками.Работает ли это на практике, зависит от того, насколько тщательно была подготовлена ​​ваша версия libstdc++.so.6.

Различные версии GCC Red Hat Developer Toolset позволяют избежать этой проблемы, поскольку они используют гибридную связьмодель, в которой по-прежнему используется основная часть системной библиотеки libstdc++.so.6, а функциональность, необходимая для более новых версий C ++, включена через статическое связывание.

...