LINUX.ORG.RU

Ошибка при компиляции ld returned 1 exit status

 , , ,


0

1

Доброго времени суток! Вот тема: Ошибка при сборке тулчейна Этот компилятор(а именно g++) при компиляции выдаёт такое: /home/seiza/buildroot/build_mipsel/staging_dir/usr/bin/../lib/gcc/mipsel-linux-uclibc/4.2.1/libgcc_eh.a(unwind-dw2-fde-glibc.o): In function `_Unwind_Find_FDE': /home/seiza/buildroot/toolchain_build_mipsel/gcc-4.2.1/gcc/unwind-dw2-fde-glibc.c:420: undefined reference to `dl_iterate_phdr' collect2: ld returned 1 exit status

Что это такое и как это вылечить? Я знаю, что вы не экстросенсы, но я не знаю, что вам нужно, поэтому говорите, что предоставить и я это предоставлю... Спасибо!!!!

dl_iterate_phdr — системный вызов

https://linux.die.net/man/3/dl_iterate_phdr

Если у тебя Ubuntu 9.10, то возможно ядро слишком старое и ещё не имеет такого API (соответственно линкер (ld) не может его найти).

Т.е. если можешь — обнови ядро. Или выключи компиляцию модуля, требующего этого API

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

dl_iterate_phdr — системный вызов. Т.е. если можешь — обнови ядро

Ну вы даёте. Какой-же это системный вызов. Вы не поверите, эта функция из ldso даже не вызывает ни один системный вызов!

int dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void *data), void *data)
{
        unsigned char *p;
        ElfW(Phdr) *phdr, *tls_phdr=0;
        size_t base = 0;
        size_t n;
        struct dl_phdr_info info;
        size_t i, aux[AUX_CNT];

        for (i=0; libc.auxv[i]; i+=2)
                if (libc.auxv[i]<AUX_CNT) aux[libc.auxv[i]] = libc.auxv[i+1];

        for (p=(void *)aux[AT_PHDR],n=aux[AT_PHNUM]; n; n--,p+=aux[AT_PHENT]) {
                phdr = (void *)p;
                if (phdr->p_type == PT_PHDR)
                        base = aux[AT_PHDR] - phdr->p_vaddr;
                if (phdr->p_type == PT_TLS)
                        tls_phdr = phdr;
        }
        info.dlpi_addr  = base;
        info.dlpi_name  = "/proc/self/exe";
        info.dlpi_phdr  = (void *)aux[AT_PHDR];
        info.dlpi_phnum = aux[AT_PHNUM];
        info.dlpi_adds  = 0;
        info.dlpi_subs  = 0;
        if (tls_phdr) {
                info.dlpi_tls_modid = 1;
                info.dlpi_tls_data = (void *)(base + tls_phdr->p_vaddr);
        } else {
                info.dlpi_tls_modid = 0;
                info.dlpi_tls_data = 0;
        }
        return (callback)(&info, sizeof (info), data);
}

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

Так что мне делать то?

Спасибо! Но что в итоге делать надо, чтоб исправить?

Profi_GMan
() автор топика
Ответ на: Так что в итоге делать надо, чтоб исправить? от Profi_GMan

Так что в итоге делать надо

Это правильный вопрос. Спросить у автора тулчейна.

чтоб исправить?

Ну раз никто не отвечает, значить тут с такой проблемой не встречались.

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

А что такого рода ошибка вообще значит?

Возможно нарушен порядок сборки тулчейна или с путями для поиска уже собранного. Оно хочет функцию из своего же кросплатформенного динамического загрузчика и не находит.

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

То есть нужно пересобирать тулчейн? Ужас... Спасибо за ответ

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