Чтобы решить эту проблему без добавления новых правил из react/recommended
, установите eslint-plugin-react
:
npm i eslint-plugin-react --save
добавьте .eslintrc.js
:
"plugins": ["react"]
и:
"rules": {
"react/jsx-uses-react": "error",
"react/jsx-uses-vars":
"error"
}
Используйте опцию --whole-archive
linker.
Библиотеки, которые приходят после , в командной строке не будут отброшены символы без ссылок. Вы можете возобновить нормальное поведение связи, добавив --no-whole-archive
после этих библиотек.
В вашем примере команда будет:
g++ -o program main.o -Wl,--whole-archive /path/to/libmylib.a
В общем случае это будет:
g++ -o program main.o \
-Wl,--whole-archive -lmylib \
-Wl,--no-whole-archive -llib1 -llib2
Если в статической библиотеке есть определенная функция, которая лишена компоновщиком как неиспользованная, но вам это действительно нужно (одним из примеров является функция JNI_OnLoad ()), вы можете заставить компоновщик сохранить ее (и, естественно, весь код, который вызывается из этой функции). Добавьте -u JNI_OnLoad
в свою ссылку.
whole-archive
с NDK Android и CMake без успеха, и я думаю, что использование флага -u
компоновщика - мой единственный вариант. Как бы вы это сделали в НДК? И есть ли другая альтернатива для этого на Android, о которой вы знаете? (Я не могу использовать LOCAL_WHOLE_STATIC_LIBRARIES
, потому что я использую CMake вместо android.mk
)
– Jaime Ivan Cervantes
4 April 2018 в 04:54
Исходное предложение было «близко»:
Попробуйте следующее: -Wl,--whole-archive -lyourlib
Мне нравятся другие ответы лучше, но вот еще одно «решение».
cd mylib ; ar x /path/to/libmylib.a
g++ -o program main.o mylib/*.o
-Wl,-no-whole-archive
в конец. Поскольку man ld говорит: "Во-вторых, не забудьте использовать-Wl,-no-whole-archive
после списка архивов, потому что gcc добавит свой собственный список архивов к вашей ссылке, и вы не можете хотите, чтобы этот флаг также влиял на них. & quot; i> – Sasha 8 December 2016 в 20:19