LINUX.ORG.RU

Ошибка - undefined reference to `main'. Как решить?

 ,


0

2

При компиляции(точнее это похоже уже при линковке) OpenSSL вылазит ошибка:

/home/sim/LINUX/DevKit8000/Linux/tools/Cross_compiler_Devkit8000/arm-2007q3/bin/../arm-none-linux-gnueabi/libc/usr/lib/crt1.o: In function `_start': init.c:(.text+0x30): undefined reference to `main' collect2: ld returned 1 exit status

компилирую на компе с DEBIAN под ARMv7 c linux.

export cross=arm-linux-gnueabi-

./Configure no-asm linux-armv4 -march=armv7-a --prefix=$HOME/opensslArm

make CC=«${cross}gcc» AR=«${cross}ar r» RANLIB=«${cross}ranlib»

Делал как тут: ТУТ

Нашел похожую ошибку с решением ТУТ но как мне это применить к своему случаю - понятия не имею. Там они вроде меняют MAKE file.....но у меня то он создается автоматом при помощи ./Configure. Куда копать? уже замучался.............


Сборка openssl-1.0.1e для iMX538 (ARM Cortex-A8)

./Configure compiler:$(CROSS)gcc no-sse2 zlib no-shared \
    --openssldir=/etc/ssl --prefix=/tmp/ssl \
    -I$(LTIB_BUILD_DIR)/zlib-1.2.3 \
    -L$(LTIB_BUILD_DIR)/zlib-1.2.3 && \
make
$(CROSS) - путь до кросс-копилятора
$(LTIB_BUILD_DIR) - путь до директории сборки стороних пакетов

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

Спасибо!Попробую завтра! а разве указывать целевую платформу не надо? ну например: linux-armv4 -march=armv7-a. Он же вроде тогда соберет под железо на котором собирается....

Racot
() автор топика

Ошибка здесь:

... /arm-2007q3/bin/../arm-none-linux-gnueabi/ ...

Тебе нужен кросс-компилятор для ARM linux, а не просто для bare-metal ARM, у них разная libc. Попробуй собрать с помощью arm-linux-gnueabi-hf.

mtk
()
Ответ на: комментарий от mtk

Оу!...первый раз слышу ...я этим компилятором ядро собирал...а для уровня пользователя он не годится? где можно почитать про отличия?

Racot
() автор топика
Ответ на: комментарий от Racot

Вот, например. На bare-metal совсем другая libc, там ты как правило сам пишешь свой стартовый код.

mtk
()
Ответ на: комментарий от Racot

Ответ на сообщение:

Сделать это можно с помощью утилиты uuencode (uuencode file.tgz file.tgz | xclip, после чего вставить в поле ввода сообщения средней кнопкой мыши (желательно в теги [ code ][ /code ])).

anonymous
()

Только что специально проверил сборку с linaro-gcc (когда-то плотно работал с openssl):

  • Стянул последний gcc-linaro-arm-linux-gnueabihf и добавил в $PATH
  • Стянул openssl с гита и собрал под linux-armv4:
    export cross=arm-linux-gnueabihf-
    export CC=${cross}gcc
    export AR=${cross}ar
    export RANLIB=${cross}ranlib
     ./Configure no-asm linux-armv4 -march=armv7-a
    make
    
  • libssl и libcrypto на месте.

УМВР, а у тебя тулчейн кривой (CodeSourcery, угадал?)

mtk
()
Ответ на: комментарий от Racot

Скачал Linaro последний и......тоже самое) В общем проблему решил но почему так - не понял.... Если в кратце то сорцы OpenSSL скачал в винде в виде tar.bz2....там их разархивировал и кинул в виртуалку на Debian...и вот из-за этого вылезает такая ошибка....если разархивацию провожу в Debian - то все собирается нормально.

P.S. Если разархивировать в винде то на файле ./Configure надо поставить галку что он исполняемый (по умолчанию не стоит)...

P.P.S. Странно это все

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