Цитата(samosad @ Mar 3 2008, 22:27)

имеется ввиду ФС которая на целевой платформе? там использую ядро zImage и ФС ramdisk.gz которые генерируются автоматически при сборке Linux (make xconfig - make dep - make)
Да именно целевой платформы.
Проверте, от каких библиотек зависит исполняемый файл. Эти библиотеки должны быть на целевой кортевой ФС вправильных каталогах (/lib, /usr/lib).
Имеются в виду динамические библиотеки, котрые нужны во время выполнения.
Статическая линковка для того и статическая, что бы во время выполнения не нужно было библиотек.
Кроме того, убедитесь, что Вы используете C а не C++ компилятор. В C++ есть libstdc++.so, которая не бывает статической, а только динамической. (По крайней мере я такого не знаю).
Проверить зависимость от динамических библиотек можно примерно так:
Код
amw@fox:~/tmp$ readelf -d file
Dynamic section at offset 0x630 contains 21 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x000000000000000c (INIT) 0x400350
0x000000000000000d (FINI) 0x400534
0x0000000000000004 (HASH) 0x400240
0x000000006ffffef5 (GNU_HASH) 0x400258
0x0000000000000005 (STRTAB) 0x4002c0
0x0000000000000006 (SYMTAB) 0x400278
0x000000000000000a (STRSZ) 56 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000015 (DEBUG) 0x0
0x0000000000000003 (PLTGOT) 0x6007d8
0x0000000000000002 (PLTRELSZ) 24 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0x400338
0x0000000000000007 (RELA) 0x400320
0x0000000000000008 (RELASZ) 24 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x000000006ffffffe (VERNEED) 0x400300
0x000000006fffffff (VERNEEDNUM) 1
0x000000006ffffff0 (VERSYM) 0x4002f8
0x0000000000000000 (NULL) 0x0
Это приведенный в первом посте исходник скомпилированный на x86_64. Воспользуйтесь соответствующими кросс-тулсами.
Главное в этой строчке:
Код
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
Цитата
а корневая ФС основного компа стандартная, тулчайн arm-linux-gcc уставанливается в папку /usr/local/arm-linux, значит и его библиотеки там же должны быть.
и вообще какие библиотеки нужны при компиляции такого файла как file.c (см. первый пост) там же ни одного include'a..
include - это не библиотеки. Это всего лиш включаемые файлы.
Запустите компиляцию с ключем -v и внимательно посмотрите, как gcc запускает линкер.
К примеру тот же исходник:
Код
gcc -v -o file file.c
Using built-in specs.
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --with-gxx-include-dir=/usr/include/c++/4.2 --program-suffix=-4.2 --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.2.3 20071123 (prerelease) (Debian 4.2.2-4)
/usr/lib/gcc/x86_64-linux-gnu/4.2.3/cc1 -quiet -v file.c -quiet -dumpbase file.c -mtune=generic -auxbase file -version -o /tmp/ccYLRllf.s
ignoring nonexistent directory "/usr/local/include/x86_64-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../../x86_64-linux-gnu/include"
ignoring nonexistent directory "/usr/include/x86_64-linux-gnu"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/lib/gcc/x86_64-linux-gnu/4.2.3/include
/usr/include
End of search list.
GNU C version 4.2.3 20071123 (prerelease) (Debian 4.2.2-4) (x86_64-linux-gnu)
compiled by GNU C version 4.2.3 20071123 (prerelease) (Debian 4.2.2-4).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 7582e76d5636938d7d7e45262761cb70
as -V -Qy -o /tmp/ccqmWqqj.o /tmp/ccYLRllf.s
GNU assembler version 2.18.0 (x86_64-linux-gnu) using BFD version (GNU Binutils for Debian) 2.18.0.20080103
/usr/lib/gcc/x86_64-linux-gnu/4.2.3/collect2 --eh-frame-hdr -m elf_x86_64 --hash-style=both -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o file /usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../../lib/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../../lib/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.2.3/crtbegin.o -L/usr/lib/gcc/x86_64-linux-gnu/4.2.3 -L/usr/lib/gcc/x86_64-linux-gnu/4.2.3 -L/usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../.. /tmp/ccqmWqqj.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/x86_64-linux-gnu/4.2.3/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../../lib/crtn.o
Сообщение отредактировал amw - Mar 5 2008, 14:25
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.