Кросс-компиляция ltrace для arm-linux - PullRequest
1 голос
/ 13 апреля 2011

После нескольких патчей я смог запустить Makefile, и теперь он зависает на последнем этапе :(. Вот ошибка, которую я получаю:

arm-none-linux-gnueabi-gcc main.o libltrace.a -lelf -o ltrace
arm-none-linux-gnueabi-gcc/bin/ld: cannot find -lelf
collect2: ld returned 1 exit status
make: *** [ltrace] Error 1

Я хочу запустить ltrace на Android. Буду признателен за любой вклад.

Ответы [ 3 ]

2 голосов
/ 02 мая 2011

вы не можете использовать библиотеку libelf в вашей собственной системе. Вы пытаетесь кросс-компиляции в конце концов. ваш компьютер, вероятно, на базе x86, телефон является рукой. Даже если вы сможете убедить компилятор связать конечный исполняемый файл, ваш код x86 не будет работать на руку.

У вас есть два варианта:

1) тоже скомпилировать libelf с помощью кросс-компилятора

2) попробуйте извлечь версию libelf в ручном режиме из архива Debian, распакуйте ее с помощью dpkg -x в личный каталог и попытайтесь скомпоновать ее.

Вы можете использовать указание имени библиотеки через полный путь вместо -l.

1 голос
/ 02 мая 2011

Рассмотрим Scratchbox. Лично я ненавижу кросс-компиляцию, особенно потому, что я большой фанат Python, и кросс-компиляцию сложно, потому что он хочет запустить исполняемый файл python (тот, который только что был собран) как часть процесса сборки. Это, очевидно, вызывает проблемы, когда вы скомпилировали версию Python для ARM на рабочем столе x86. Поскольку Scratchbox использует эмуляцию, он (и вы) может запускать ваши двоичные файлы ARM в настольной системе (в среде scratchbox), что решает массу проблем кросс-компиляции.

ScratchBox использовался для ныне несуществующей операционной системы Maemo (работающей на ARM), но люди успешно использовали его для Android:

Если вы пойдете этим путем, дайте мне знать в разделе комментариев. У меня есть виртуальная машина scratchbox, за которой я работал, когда разрабатывал для Maemo. Сейчас я пишу программное обеспечение для Android, поэтому у меня есть личный интерес к тому, чтобы работа скрэтч-бокса работала на Android.

1 голос
/ 30 апреля 2011

Try: apt-get установить libelf-dev и посмотрите ld не может найти существующую библиотеку

...