Ошибка компоновщика при создании .so файла.Ошибка: функция не реализована - PullRequest
0 голосов
/ 21 февраля 2019

На этапе компоновки для создания файла “.so” с помощью компоновщика “ld” помечается сообщение об ошибке.

Я попытался найти его, но ничего конкретного не нашел.Это сообщение помечается с включенным флагом компоновщика “--trace”.“--trace” выводит файлы, использованные в процессе создания ссылки.Платформа Windows.

Ниже упоминается сообщение об ошибке.Это сообщение встречается несколько раз в процессе связывания.Любые выводы будут оценены.

ОШИБКА:

arm-linux-androideabi/bin\ld: error: dummy.so: write: Function not implemented**

1 Ответ

0 голосов
/ 23 марта 2019

Также недавно столкнулся с этой проблемой, и это также происходит только в Windows при выполнении отладочной сборки.Мне никогда не удавалось найти исправление кода, чтобы сделать компоновщик LD счастливым и устранить ошибки.

Однако я смог переключиться на использование компоновщика LLD LLVM и снова получить отладочную сборку, работающую в Windows.После переключения компоновщик LLD обнаружил некоторые ошибки компоновщика, которые LD, казалось, никогда не обнаруживал.После исправления этих проблем я смог снова успешно собрать.

Чтобы переключиться на использование компоновщика LLD, я добавил следующие флаги компоновщика в свою сборку:

-fuse-ld=lld
-Wl,--no-threads

Компоновщик LLD был создандоступно в NDK r18, поэтому вам нужно будет построить с использованием подходящего NDK, иначе флаги не будут распознаны.

Я использую CMake, поэтому я просто добавил эти флаги в конце своего объявления target_link_libraries в моей общей библиотеке.

Я добавил второй флаг, "-Wl, - no-threads", чтобы отключить многопоточное связывание, которое, очевидно, может быть проблемой в Windows и привести к зависанию (см. https://github.com/android-ndk/ndk/wiki/Changelog-r19больше информации).

Если вы используете ndk-build, то многопоточное связывание уже должно быть отключено по умолчанию (начиная с NDK r19b).

ПРИМЕЧАНИЕ. В настоящее время я собираю с помощью NDK r19c.В итоге Android NDK по умолчанию переключится на компоновщик LLD LLVM (по оценкам, r21).

...