Уведомления
Очистить всё

вопросы по crosstools-ng


Rici33
Сообщения: 2
Автор темы
(@rici33)
New Member
Присоединился: 1 год назад

экспериментирую с 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’


Поделиться: