URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10499
[ Назад ]

Исходное сообщение
"вопросы по crosstools-ng"

Отправлено microbash , 19-Авг-25 12:30 
экспериментирую с crosstools-ng. есть вопросы.
при конфигурировании сборки в менюшке включил в состав gcc-4.9.4 и glibc 2.17,
просто хочу с ними собрать бинарник под линукс.
в путь добавил export PATH="/opt/x-tools/x86_64-linux-gnu/bin:$PATH"

основная структура папок сборки:

/opt/x-tools/
└── x86_64-linux-gnu
    ├── bin
    │   ├── x86_64-linux-gnu-addr2line
    │   ├── x86_64-linux-gnu-ar
    │   ├── x86_64-linux-gnu-as
    │   ├── x86_64-linux-gnu-c++
    │   ├── x86_64-linux-gnu-cc -> x86_64-linux-gnu-gcc
    │   ├── x86_64-linux-gnu-c++filt
    │   ├── x86_64-linux-gnu-cpp
    │   ├── x86_64-linux-gnu-elfedit
    │   ├── x86_64-linux-gnu-g++
    │   ├── x86_64-linux-gnu-gcc
    │   ├── x86_64-linux-gnu-gcc-4.9.4
    │   ├── x86_64-linux-gnu-gcc-ar
    │   ├── x86_64-linux-gnu-gcc-nm
    │   ├── x86_64-linux-gnu-gcc-ranlib
    │   ├── x86_64-linux-gnu-gcov
    │   ├── x86_64-linux-gnu-gdb
    │   ├── x86_64-linux-gnu-gdb-add-index
    │   ├── x86_64-linux-gnu-gp-archive
    │   ├── x86_64-linux-gnu-gp-collect-app
    │   ├── x86_64-linux-gnu-gp-display-html
    │   ├── x86_64-linux-gnu-gp-display-src
    │   ├── x86_64-linux-gnu-gp-display-text
    │   ├── x86_64-linux-gnu-gprof
    │   ├── x86_64-linux-gnu-gprofng
    │   ├── x86_64-linux-gnu-ld
    │   ├── x86_64-linux-gnu-ld.bfd
    │   ├── x86_64-linux-gnu-ldd
    │   ├── x86_64-linux-gnu-nm
    │   ├── x86_64-linux-gnu-objcopy
    │   ├── x86_64-linux-gnu-objdump
    │   ├── x86_64-linux-gnu-populate
    │   ├── x86_64-linux-gnu-ranlib
    │   ├── x86_64-linux-gnu-readelf
    │   ├── x86_64-linux-gnu-size
    │   ├── x86_64-linux-gnu-strings
    │   └── x86_64-linux-gnu-strip
    ├── build.log.bz2
    ├── etc
    │   └── gprofng.rc
    ├── include
    │   ├── collectorAPI.h
    │   ├── libcollector.h
    │   └── libfcollector.h
    ├── lib
    │   ├── bfd-plugins
    │   ├── gcc
    │   ├── gprofng
    │   └── libgprofng.a
    ├── libexec
    │   └── gcc
    ├── share
    │   ├── gcc-4.9.4
    │   ├── gdb
    │   ├── licenses
    │   └── x86_64-linux-gnu-ct-ng.config.bz2
    └── x86_64-linux-gnu
        ├── bin
        ├── debug-root
        ├── include
        ├── lib
        ├── lib64
        └── sysroot

1.
собираю хеловорд:


x86_64-linux-gnu-g++ test.c -o test

смотрю, что получилось по зависимостям.
видно, что фигня полная, зачем он лезет в системные либы, а не использует свои внутренние.


ldd -v test
        linux-vdso.so.1 (0x00007ffe2fbe9000)
        libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007ff645200000)
        libm.so.6 => /lib64/libm.so.6 (0x00007ff64547c000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007ff64545f000)
        libc.so.6 => /lib64/libc.so.6 (0x00007ff644e00000)
        /lib64/ld-linux-x86-64.so.2 (0x00007ff645560000)

        Version information:
        ./test:
                libc.so.6 (GLIBC_2.34) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
                libstdc++.so.6 (GLIBCXX_3.4) => /lib64/libstdc++.so.6
        /lib64/libstdc++.so.6:
                libm.so.6 (GLIBC_2.2.5) => /lib64/libm.so.6
                ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
                libgcc_s.so.1 (GCC_4.2.0) => /lib64/libgcc_s.so.1
                libgcc_s.so.1 (GCC_3.3) => /lib64/libgcc_s.so.1
                libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
                libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.6) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.33) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.18) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.16) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.32) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.3) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.34) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
        /lib64/libm.so.6:
                ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
                libc.so.6 (GLIBC_2.4) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
                libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
        /lib64/libgcc_s.so.1:
                libc.so.6 (GLIBC_2.35) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.14) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.34) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
                libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
        /lib64/libc.so.6:
                ld-linux-x86-64.so.2 (GLIBC_2.35) => /lib64/ld-linux-x86-64.so.2
                ld-linux-x86-64.so.2 (GLIBC_2.2.5) => /lib64/ld-linux-x86-64.so.2
                ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
                ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2

2.
пробую ограничить компилятор по заголовкам и либам, чтобы он использовал только свои внутренние. получаю ошибку, что не видит заголовок.


x86_64-linux-gnu-g++ test.c -o test --sysroot=/opt/x-tools/x86_64-linux-gnu -isysroot=/opt/x-tools/x86_64-linux-gnu
In file included from /opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/include/c++/4.9.4/x86_64-linux-gnu/bits/c++config.h:430:0,
                 from /opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/include/c++/4.9.4/iostream:38,
                 from test.c:1:
/opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/include/c++/4.9.4/x86_64-linux-gnu/bits/os_defines.h:39:22: fatal error: features.h: No such file or directory
#include <features.h>
                      ^
compilation terminated.

не совсем понимаю его логику.
вывод свойств и папок компилятора:


x86_64-linux-gnu-g++ -v -E -xc - < /dev/null 2>&1

Using built-in specs.
COLLECT_GCC=x86_64-linux-gnu-g++
Target: x86_64-linux-gnu
Configured with: /opt/.build/x86_64-linux-gnu/src/gcc/configure --build=x86_64-build_pc-linux-gnu --host=x86_64-build_pc-linux-gnu --target=x86_64-linux-gnu --prefix=/opt/x-tools/x86_64-linux-gnu --exec_prefix=/opt/x-tools/x86_64-linux-gnu --with-sysroot=/opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/sysroot --enable-languages=c,c++ --with-pkgversion='crosstool-NG 1.27.0' --enable-__cxa_atexit --disable-tm-clone-registry --disable-libmudflap --disable-libgomp --disable-libssp --disable-libquadmath --disable-libquadmath-support --disable-libsanitizer --with-gmp=/opt/.build/x86_64-linux-gnu/buildtools --with-mpfr=/opt/.build/x86_64-linux-gnu/buildtools --with-mpc=/opt/.build/x86_64-linux-gnu/buildtools --with-isl=/opt/.build/x86_64-linux-gnu/buildtools --with-cloog=/opt/.build/x86_64-linux-gnu/buildtools --enable-lto --without-zstd --enable-threads=posix --enable-target-optspace --disable-plugin --disable-nls --disable-multilib --with-local-prefix=/opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/sysroot --enable-long-long
Thread model: posix
gcc version 4.9.4 (crosstool-NG 1.27.0)
COLLECT_GCC_OPTIONS='-v' '-E' '-shared-libgcc' '-mtune=generic' '-march=x86-64'
/opt/x-tools/x86_64-linux-gnu/libexec/gcc/x86_64-linux-gnu/4.9.4/cc1 -E -quiet -v - -mtune=generic -march=x86-64
ignoring nonexistent directory "/opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/include"
#include "..." search starts here:
#include <...> search starts here:
/opt/x-tools/x86_64-linux-gnu/lib/gcc/x86_64-linux-gnu/4.9.4/include
/opt/x-tools/x86_64-linux-gnu/lib/gcc/x86_64-linux-gnu/4.9.4/include-fixed
/opt/x-tools/x86_64-linux-gnu/lib/gcc/x86_64-linux-gnu/4.9.4/../../../../x86_64-linux-gnu/include
/opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/usr/include
End of search list.
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "<stdin>"
COMPILER_PATH=/opt/x-tools/x86_64-linux-gnu/libexec/gcc/x86_64-linux-gnu/4.9.4/:/opt/x-tools/x86_64-linux-gnu/libexec/gcc/x86_64-linux-gnu/4.9.4/:/opt/x-tools/x86_64-linux-gnu/libexec/gcc/x86_64-linux-gnu/:/opt/x-tools/x86_64-linux-gnu/lib/gcc/x86_64-linux-gnu/4.9.4/:/opt/x-tools/x86_64-linux-gnu/lib/gcc/x86_64-linux-gnu/:/opt/x-tools/x86_64-linux-gnu/lib/gcc/x86_64-linux-gnu/4.9.4/../../../../x86_64-linux-gnu/bin/
LIBRARY_PATH=/opt/x-tools/x86_64-linux-gnu/lib/gcc/x86_64-linux-gnu/4.9.4/:/opt/x-tools/x86_64-linux-gnu/lib/gcc/x86_64-linux-gnu/4.9.4/../../../../x86_64-linux-gnu/lib/../lib64/:/opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/lib/../lib64/:/opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/usr/lib/../lib64/:/opt/x-tools/x86_64-linux-gnu/lib/gcc/x86_64-linux-gnu/4.9.4/../../../../x86_64-linux-gnu/lib/:/opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/lib/:/opt/x-tools/x86_64-linux-gnu/x86_64-linux-gnu/sysroot/usr/lib/
COLLECT_GCC_OPTIONS='-v' '-E' '-shared-libgcc' '-mtune=generic' '-march=x86-64'


Содержание

Сообщения в этом обсуждении