Kris
Пункты: 234
Регистрация: 27.07.2011
Использую SK-AT91SAM9260 и натроенную систему сборки, поставляемую в виде образа виртуальной машины. Собираю приложения под linux. Все работает, но при сборке -static.
Если с динамическми библиотеками, то при запуске приложениея на плате. -sh: /home/test: Not found.
Например:
#include <stdio.h>
int main(void)
{
printf("Hello word");
return 0;
}
Компилируем arm-none-linux-gnueabi-gcc -o test test.c
Есть предположение, что из-за uclibc и glibc. Т.е. на плате uclibc, а я собираю с glibc.
ldd /home/test выдает
checking sub-depends for 'not found'
libc.so.6 => not found (0x00000000)
/lib/ld-linux.so.3 => /lib/ld-linux.so.3 (0x00000000)
Содержимое /lib:
# ls -l
ld-uClibc-0.9.30.2.so
ld-uClibc.so.0 -> ld-uClibc-0.9.30.2.so
libc.so.0 -> libuClibc-0.9.30.2.so
libcrypt-0.9.30.2.so
ibcrypt.so.0 -> libcrypt-0.9.30.2.so
libdl-0.9.30.2.so
libdl.so.0 -> libdl-0.9.30.2.so
libgcc_s.so -> libgcc_s.so.1
ibgcc_s.so.1
libm-0.9.30.2.so
libm.so.0 -> libm-0.9.30.2.so
libnsl-0.9.30.2.so
libnsl.so.0 -> libnsl-0.9.30.2.so
libpthread-0.9.30.2.so
libpthread.so.0 -> libpthread-0.9.30.2.so
libresolv-0.9.30.2.so
libresolv.so.0 -> libresolv-0.9.30.2.so
librt-0.9.30.2.so
librt.so.0 -> librt-0.9.30.2.so
libuClibc-0.9.30.2.so
libutil-0.9.30.2.so
libutil.so.0 -> libutil-0.9.30.2.so
modules
Я прав по поводу uClibc и libc? Как нормально собрать приложение с динамическими библиотеками?
sasamy
Пункты: 83542
Регистрация: 14.08.2009
Цитата
Как нормально собрать приложение с динамическими библиотеками?
Собирайте корневую ФС и свои приложения одним кросскомпилятором - никаких проблем нет с динамическими библиотеками.
Kris
Пункты: 234
Регистрация: 27.07.2011
Заново все собирать - свои проблемы будут.
Всеж-таки кто работал с образом с системой сборки от старкит... как сие лечится?
sasamy
Пункты: 83542
Регистрация: 14.08.2009
Цитата
Заново все собирать - свои проблемы будут.
Если вы не научитесь делать элементарные вещи - проблемы в будущем гарантированы, даже если сейчас ваш хелловорд заработает.
Чтобы не пересобирать корневую - найдите в дереве buildroot кросскомпилятор, пропишите путь к нему в PATH и используйте его для сборки своих программ.