Я скачал исходный код Android 2.3.6 и успешно его собрал. Затем я добавил библиотеку C ++ во внешнюю папку и попытался ее собрать, но, когда это сделал, я получил следующие ошибки:
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/ld: path/to/myfile.cpp:26: error: undefined reference to '__cxa_end_cleanup'
prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/../lib/gcc/arm-eabi/4.4.3/../../../../arm-eabi/bin/ld: : error: undefined reference to '__gxx_personality_v0'
in function path/to/myfile.cpp:26: error: undefined reference to 'operator delete(void*)'
Я добавил эту строку в файл Android.mk: LOCAL_CXX = path / to / g ++ compiler
для того, чтобы использовать компилятор g ++
но он по-прежнему использует … / arm-eabi / bin / ld для связи с другими библиотеками, как я могу принудительно использовать g ++ в качестве компоновщика.
Вам нужно скомпилировать & связать код C ++ с g++
и не gcc
,
Были ошибки того же рода, наряду с 'out/xxx/yyy.o: file is empty'
, Для меня причина была в том, что VM потерпела крах во время процесса сборки, оставив некоторые файлы поврежденными (не нужно было делать repo sync
поврежденные файлы были бинарными).
Я удалил каталог, содержащий проблемные файлы, перезапустил процесс сборки, и ошибки исчезли.