Gcc location in linux

gcc⚓︎

Пакет содержит набор компиляторов GNU для таких языков как Си и Си++.

Версия: 11.2.0

Размер: 77.14Mb

Приоритет: Необходимый

MD5: 31c86f2ced76acac66992eeedce2fce2

SBU (Сборка временной системы): 14.8

Подготовка⚓︎

Исправьте пути установки библиотек:

 sed -e '/m64=/s/lib64/lib/' \ -e '/m32=/s/m32=.*/m32=..\/lib32$(call if_multiarch,:i386-linux-gnu)/' \ -i.orig gcc/config/i386/t-linux64 

Настройка⚓︎

На данном этапе необходимы только компиляторы для C и C++, однако вы можете собрать компиляторы для любых поддерживаемых GCC языков программирования, перечислив их через запятые в опции configure —enable-languages=c,c++ . GCC поддерживает следующие языки — c,c++,d,fortran,go,objc,obj-c++ . вы можете собрать все доступные компиляторы, добавив параметр —enable-languages=c,c++,d,fortran,go,objc,obj-c++ . Если позднее вам потребуется компилятор для какого либо языка из этого списка — пересоберите GCC с его поддержкой.

 mkdir -v build cd build ../configure --prefix=/usr \ LD=ld \ --disable-bootstrap \ --with-system-zlib \ --enable-languages=c,c++ --disable-multilib 

Для multilib⚓︎

 mkdir -v build cd build ../configure --prefix=/usr \ LD=ld \ --disable-bootstrap \ --with-system-zlib \ --enable-languages=c,c++ --enable-multilib --with-multilib-list=m64,m32 

Значения параметров⚓︎

—disable-bootstrap — предотвращает многократную пересборку GCC

LD=ld — сообщает GCC использовать ранее установленную версию компоновщика

Сборка⚓︎

Тестирование⚓︎

  • Увеличьте размер стека по умолчанию
  • Произведите тестирование от непривилегированного пользователя во избежание непредвиденных ситуаций с системой.
 ulimit -s 32768 chown -Rv tester . su tester -c "PATH=$PATH make -k check" 

Тестирование этого пакета занимает достаточно много времени.

Для просмотра итогов теста выполните:

Известно, что 6 тестов, связанных с get_time , дают сбои. По видимому, это связано с локалью en_HK . Кроме того, тест COSTEXPR-52830 не удается.

Читайте также:  Ping linux как установить

Установка⚓︎

  • Удалите ненужную директорию,
  • Убедитесь, что владелец установленных заголовков корректный,
  • По историческим причинам некоторые программы могут пытаться найти cpp в директории /lib . Создайте ссылку,
  • Для поддержки LTO требуется следующая символическая ссылка,
  • Переместите файлы в правильное место:
 rm -rf /usr/lib/gcc/$(gcc -dumpmachine)/11.2.0/include-fixed/bits/ chown -v -R root:root \ /usr/lib/gcc/*linux-gnu/11.2.0/include,-fixed> ln -svr /usr/bin/cpp /usr/lib ln -sfv ../../libexec/gcc/$(gcc -dumpmachine)/11.2.0/liblto_plugin.so \ /usr/lib/bfd-plugins/ mkdir -pv /usr/share/gdb/auto-load/usr/lib,32> mv -v /usr/lib/*gdb.py /usr/share/gdb/auto-load/usr/lib mv -v /usr/lib32/*gdb.py /usr/share/gdb/auto-load/usr/lib32 

При использовании раздельных каталогов:⚓︎

Проверка работоспособности⚓︎

Сейчас необходимо проверить работу gcc . Если всё нормально, то продолжайте сборку.

 echo 'int main()<>' > dummy.c cc dummy.c -v -Wl,--verbose &> dummy.log readelf -l a.out | grep ': /lib' 

Ошибок быть не должно, а результат команды (учитывая различия в имени динамического компоновщика, зависящие от платформы) будет следующий:

 Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] 

Проверим что задействованы правильные стартовые файлы. Выполните команду:

 grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log 
 /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../lib/crt1.o succeeded /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../lib/crti.o succeeded /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/../../../../lib/crtn.o succeeded 

В зависимости от архитектуры, приведенное выше может немного отличаться. Разница будет в названии каталога после /usr/lib/gcc . Здесь важно обратить внимание на то, что gcc обнаружил все три файла crt * .o в каталоге /usr/lib .

Проверим то, что компилятор выполняет поиск корректных заголовочных файлов:

 grep -B4 '^ /usr/include' dummy.log 
 #include search starts here: /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/include /usr/local/include /usr/lib/gcc/x86_64-pc-linux-gnu/11.2.0/include-fixed 

Проверим, что компоновщик использует корректные пути поиска:

 grep 'SEARCH.*/usr/lib' dummy.log |sed 's|; |\n|g' 
 SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib64") SEARCH_DIR("/usr/local/lib64") SEARCH_DIR("/lib64") SEARCH_DIR("/usr/lib64") SEARCH_DIR("/usr/x86_64-pc-linux-gnu/lib") SEARCH_DIR("/usr/local/lib") SEARCH_DIR("/lib") SEARCH_DIR("/usr/lib"); 

Проверим, что используется корректная стандартная библиотека

 grep "/lib.*/libc.so.6 " dummy.log 
 attempt to open /usr/lib/libc.so.6 succeeded 

Проверим, что используется корректный динамический компоновщик:

 grep "found ld-linux*" dummy.log 

Результат выполнения должен быть (учитывая различия в имени динамического компоновщика, зависящие от платформы):

 found ld-linux-x86-64.so.2 at /usr/lib/ld-linux-x86-64.so.2 

Если вывод не соответствует вышеуказанному, или вообще не получен, значит, что-то не так. Изучите и повторите шаги, чтобы выяснить, в чем проблема. Перед продолжением процесса необходимо решить любые проблемы.

 rm -v dummy.c a.out dummy.log 

Установленные файлы⚓︎

Программы: c++ (ссылка на g++), cc (ссылка на gcc), cpp, g++, gcc, gcc-ar, gcc-nm, gcc-ranlib, gcov, gcov-dump и gcov-tool

Библиотеки: libasan., libatomic., libcc1.so, libgcc.a, libgcc_eh.a, libgcc_s.so, libgcov.a, libgomp., libitm., liblsan., liblto_plugin.so, libquadmath., libssp., libssp_nonshared.a, libstdc++., libstdc++fs.a, libsupc++.a, libtsan. и libubsan.

Директории: /usr/include/c++, /usr/lib/gcc, /usr/libexec/gcc и /usr/share/gcc-11.2.0

Источник

Checking If GCC Compiler Is Installed On My Linux System

This post will guide you how to check if the gcc compiler or g++ compiler are installed on my ubuntu/CentOS/RHEL Linux system. How to check the location of the installed GCC compiler on Linux. HOw to install GNU c/c++ compiler (GCC and G++) on my Linux system.

Checking If GCC Compiler Is Installed

If you want to check if the GNU GCC Compilers are install on your system, you can try to check the version of GCC compiler on Linux, or you can use which command to locate gcc or g++ commands .

Check the Location of GNU or GCC Compiler

Type the following command to check the location of gcc compiler in your system, type:

$ which g++ $ which gcc $which make
devops@devops-osetc:~$ which gcc /usr/bin/gcc devops@devops-osetc:~$ which g++ /usr/bin/g++ devops@devops-osetc:~$ which make /usr/bin/make

Or you can use the type command to achieve the same result of checking the location of all compilers, type:

$ type gcc $ type g++ $ type make
devops@devops-osetc:~$ type gcc gcc is hashed (/usr/bin/gcc) devops@devops-osetc:~$ type g++ g++ is hashed (/usr/bin/g++) devops@devops-osetc:~$ type make make is hashed (/usr/bin/make)

Check Version of Compiler

if you want to check the version of All compilers installed on your Linux system, you just need to execute the following command:

$ gcc --version $ g++ --version $ make --version
devops@devops-osetc:~$ gcc --version gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. devops@devops-osetc:~$ g++ --version g++ (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609 Copyright (C) 2015 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. devops@devops-osetc:~$ make --version GNU Make 4.1 Built for x86_64-pc-linux-gnu Copyright (C) 1988-2014 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.

Installing GNU GCC Compiler

For CentOS/RHEL 6/7:
You need to execute the following yum command to install gcc compiler, type:

#yum groupinstall "Developent Tools"
#yum group install "Development Tools"

For Ubuntu/Debian Linux:
you need to run the one of the following command to install compilers, type:

$ sudo apt-get install build-essential
$ sudo apt install build-essential

Источник

Оцените статью
Adblock
detector