ld: не удалось прочитать символы: неверное значение // после обновления пакета sabayon

После установки обновления на мою коробку sabayon (я не могу вспомнить, что было обновлено), я получаю ошибку связывания с ранее работающим кодом.

dmd  src/ast.o src/saturated.o src/queue.o src/operator.o src/tree.o src/heap.o src/bug.o src/levenshtein.o src/main.o src/lexer.o src/binary_tree.o src/sparse_vector.o src/stack.o src/integral_literal.o src/precedence_climbing.o src/traversal.o -ofmain
/usr/lib/gcc/x86_64-pc-linux-gnu/4.7.3/../../../../x86_64-pc-linux-gnu/bin/ld: src/ast.o: relocation R_X86_64_32 against `.data' can not be used when making a shared object; recompile with -fPIC
src/ast.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
--- errorlevel 1
make: *** [main] Error 1

Я не знаю внутреннюю работу ld (или объектных файлов в этом отношении), но единственная проблема, о которой я могу подумать, это то, что ld не понимает некоторый искаженный синтаксис в именах переменных или функций в объектных файлах.

Любые идеи относительно того, как решить эту проблему, очень ценятся.

1 ответ

Эта проблема возникла в системах x86_64.

Попробуй добавить -fPIC на ваши CFLAGS(CXXFLAGS) или флаги компилятора вашей IDE.

Этот флаг заставит gcc(g++) скомпилироваться в 64 бит.

Другие вопросы по тегам