LINUX.ORG.RU

кросс-компиляция hello world


0

0

вообщем, собрал gcc-3.4.3 и glibc-2.3.4 для сборки программ для ARM архитектуры, установил, как написано на http://heavy-online.ru/arm-linux/. Но при компиляции простейшей программы

#include <stdio.h>
#include <sys/stat.h>

int main(int argc, char *argv[])
{
struct stat sb;

stat("/proc/cpuinfo", &sb);

return 0;
}

выдаётся ошибка

src# arm-linux-gcc hello.c -o hello

/usr/local/arm/lib/gcc/arm-linux/3.4.3/../../../../arm-linux/bin/ld: warning: cannot find entry symbol _start; defaulting to 000081f4
/tmp/ccAQyxnN.o(.text+0x24): In function `main':
: undefined reference to `stat'
collect2: ld returned 1 exit status

src#

перед компиляцией переменные окружения немного исправлены с помощью

export TARGET=arm-linux
export PREFIX=/usr/local/arm
export SYSROOT=${PREFIX}/sysroot
export ARCH=arm
export CROSS_COMPILE=${TARGET}-
export PATH=$PATH:${PREFIX}/bin

в /usr/local/arm/sysroot/lib и /usr/local/arm/sysroot/usr/lib все библиотеки имеются...

Ответ на: комментарий от Zmacs

> задизассембли объектный файл, что там получается?

gcc -S

`man gcc`

-c, -S, or -E to say where gcc is to stop.
-S Stop after the stage of compilation proper; do not assemble. The
output is in the form of an assembler code file for each non-assem-
bler input file specified.

mator ★★★★★
()
Ответ на: комментарий от Zmacs

оаказалось что коряво собрались binutils :( пересобрал - теперь всё линкуется нормально.

alex_custov ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.